我的网络上有一个共享的ubuntu驱动器,可以使用smb://servername/sharedfolder或smb:///sharedfolder在nautilus中对其进行访问。

我需要能够从我的ubuntu机器(8.10)访问它的python脚本,但是我不知道怎么做。我尝试了一种明显的方式(与鹦鹉螺相同的地址),但是没有成功。

为了播放,我尝试同时使用以下命令打印该文件夹的内容:

代码:
用于os.listdir(“smb://servername/sharedfolder”)中的文件
打印文件
两者都给我该路径上的“无文件或目录”错误。

非常感谢您的帮助-谢谢。

最佳答案

Python只能处理本地路径。
Samba是Linux系统中的驱动程序或应用程序读取的远程路径,除非使用this experimental library这样的自定义库,否则无法从Python直接访问Samba。

您可以执行类似的操作(确保您的用户具有安装内容所需的权限):

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,并且您应该将命令字符串作为列表传递。但是由于某种原因,如果您按应有的方式使用它,它会显得“复杂”,因此,我将向您发送此警告,并且您可以选择遵循通用准则,也可以仅使用它尝试功能。

Here's a complete guide on how to manually mount samba。遵循此步骤,并用自动编程替换手动步骤。

关于python - 在python脚本中访问共享的smb ubuntu,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30297355/

10-16 13:10
查看更多