通过 Linux 机器打开 Windows 共享文件夹

5 投票
4 回答
12360 浏览
提问于 2025-04-15 20:16

我在Ubuntu上使用的是Python 2.5,并且在同一个网络里有一台叫做machine1的机器。这个机器上有一个共享的文件夹。

我该怎么才能获取到那台机器上某个特定文件夹里的文件呢?

我尝试过,但都没有成功:

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

4 个回答

0

如果这个文件夹是共享的,我觉得它应该会被挂载在 ~/.gvfs 这个地方。也许你可以直接在 ~/.gvfs 里用 open 命令打开它的路径。

2

urllib 这个库不支持SMB协议,也就是说它无法处理通过SMB共享的文件。如果你想获取这些文件,就需要使用gio,并通过pygobject来实现。

6

Linux有一个叫做smbmount的工具,我记得它是在smbutils这个软件包里。

这个工具是在命令行中使用的,它可以把Windows共享的文件夹挂载到本地机器的某个目录里,使用时可以选择输入用户名和密码。

我认为smbmount这个工具需要以管理员身份运行,所以我不确定它是否适合你使用。也许普通用户也能用。

你可以选择在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。

撰写回答