我在Ubuntu上使用python 2.5,并且在同一网络中有一台名为machine1
的计算机。该文件夹是共享的。
如何在该机器的特定文件夹中获取文件?
我试过了,没有成功:
urllib.urlopen('\\machine1\folder\file.txt')
答案 0 :(得分:6)
Linux有一个名为smbmount
的用户,我相信可以在包smbutils中找到它。
这是一个命令行实用程序,它将Windows共享安装到本地计算机上的目录,可选择使用用户名/密码。
smbmount我相信一个以root身份运行的实用工具,所以它是否适合你,我不知道。也许它可以用作用户。
您可以默认在Linux计算机上安装共享,从而以本地文件的形式访问它上面的文件,或者您可以使用exec或类似的东西在python脚本中执行smbmount / smbumount。
mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare
用户名和密码可以写在文件中以保证安全性。查看man page。
如果你需要一些完整的python,请查看pysmb。谷歌的条款是python,smb,CIFS。
答案 1 :(得分:2)
urllib
无法理解SMB协议。您需要通过pygobject使用gio
才能检索文件。
答案 2 :(得分:0)
如果文件夹是共享的,我认为它应该挂载在〜/ .gvfs中。也许您可以在路径中使用open
,就像在〜/ .gvfs中看到的那样。
答案 3 :(得分:-1)
您应该查找默认文件浏览器。
然后你可以执行这个过程并传入你想要的文件夹作为参数(smb:// machine1 / folder /)。
例如在Windows上你可以这样做:
execl("explorer.exe", "D:")
尝试查找文件浏览器的路径(大部分时间是Nautilus)。
所以:
execl("/bin/nautilus", "smb://.../")
有关execl
的一些信息