访问在Python脚本共享SMB的ubuntu(Accessing shared smb ubunt

2019-10-23 03:46发布

我有我的网络上的共享驱动器的Ubuntu,我可以在鹦鹉螺使用SMB访问://服务器/ sharedfolder或smb:/// sharedfolder。

我需要能够从我的Ubuntu机(8.10)访问Python脚本,但我无法弄清楚如何。 我尝试了明显的方式(同一地址鹦鹉螺),但没有成功。

要玩,我试图打印与两个文件夹的内容:

代码:对于文件中os.listdir(“SMB://服务器/ sharedfolder”)打印文件,这两个给我走这条道路“没有文件或目录”错误。

我会很感激这个帮助 - 谢谢。

Answer 1:

Python中只能处理本地路径。 Samba是由驱动程序或应用程序读取远程路径在你的Linux系统,可以在那里不能直接从Python的,除非您使用的是自定义库像访问本实验库 。

你可以做类似的东西(确保你的用户需要安装的东西权限):

import os
from subprocess import Popen, PIPE, STDOUT

# Note: Try with shell=True should not be used, but it increases readability to new users from my years of teaching people Python.
process = Popen('mkdir ~/mnt && mount -t cifs //myserver_ip_address/myshare ~/mnt -o username=samb_user,noexec', shell=True, stdout=PIPE, stderr=PIPE)
while process.poll() is None:
    print(process.stdout.readline()) # For debugging purposes, in case it asks for password or anything.

print(os.listdir('~/mnt'))

同样,使用shell=True是危险的,它应该是False ,你应该通过命令字符串列表。 但由于某些原因,如果你使用它你应该的方式出现“复杂”,所以我给你这样的警告,你可以选择遵循的共同准则或使用此尝试的功能了。

下面是关于如何手动安装桑巴的完整指南 。 按照此,并更换自动编程的手动步骤。



Answer 2:

Python的像文件处理功能os.listdir不采取GNOME的URL像鹦鹉螺做,他们采取的文件名。 这些都是不一样的东西。

你有三个基本选择在这里:

  1. 问GNOME来查找网址给你,以同样的方式做鹦鹉螺。
  2. 选择一个Python的SMB客户端并使用它。 有多种方案可供选择 。
  3. 使用SMB文件系统插件像CIFS VFS到远程文件系统安装到安装点,因此您可以再由路径,而不是通过URL来访问其文件。


文章来源: Accessing shared smb ubuntu in python scripts