5

我在 Ubuntu 上使用 python 2.5,并且在同一网络中有一台名为machine1. 该文件夹已共享。

如何在该机器的特定文件夹中获取文件?

我试过了,没有成功:

urllib.urlopen('\\machine1\folder\file.txt')
4

4 回答 4

6

Linux 有一个名为 的实用smbmount程序,我相信它可以在 smbutils 包中找到。

这是一个命令行实用程序,可将 Windows 共享挂载到本地计算机上的目录,可选择使用用户名/密码。

我相信 smbmount 是一个以 root 身份运行的实用程序,所以我不知道它是否适合你。也许它可以用作用户。

您可以在 Linux 机器上默认安装共享,从而将其上的文件作为本地文件访问,或者您可以在 python 脚本中使用 exec 或类似的东西执行 smbmount / smbumount。

mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare

用户名和密码可以写入文件以确保安全。检查手册页

如果您需要完全 python 的东西,请查看pysmb。谷歌的术语是 python、smb、CIFS。

于 2010-03-10T20:05:04.773 回答
2

urllib不了解 SMB 协议。您需要gio通过 pygobject 来检索文件。

于 2010-03-10T19:56:05.170 回答
0

如果文件夹是共享的,我认为应该挂载到~/.gvfs。也许您可以简单地使用open在 ~/.gvfs 中看到的路径。

于 2010-03-10T20:05:36.877 回答
-1

您应该寻找默认的文件浏览器。

然后您可以执行该过程并传入您想要的文件夹作为参数 (smb://machine1/folder/)。

例如在 Windows 上,你会这样做:

execl("explorer.exe", "D:")

尝试查找文件浏览器的路径(大部分时间是 Nautilus)。

所以:

execl("/bin/nautilus", "smb://.../")

关于execl的一些信息

于 2010-03-10T19:44:37.123 回答