Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过linux计算机打开Windows共享文件夹_Python_Urllib - Fatal编程技术网

Python 通过linux计算机打开Windows共享文件夹

Python 通过linux计算机打开Windows共享文件夹,python,urllib,Python,Urllib,我在Ubuntu上使用Python2.5,在同一个网络中有一台机器叫做machine1。文件夹已共享 如何在该机器的特定文件夹中获取文件 我尝试过,但没有成功: urllib.urlopen('\\machine1\folder\file.txt') 您应该查找默认的文件浏览器 然后,您可以执行该过程并将其作为参数传入所需的文件夹(smb://machine1/folder/) 例如,在windows上,您可以执行以下操作: execl("explorer.exe", "D:") 尝试查找文

我在Ubuntu上使用Python2.5,在同一个网络中有一台机器叫做
machine1
。文件夹已共享

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

我尝试过,但没有成功:

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

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

然后,您可以执行该过程并将其作为参数传入所需的文件夹(smb://machine1/folder/)

例如,在windows上,您可以执行以下操作:

execl("explorer.exe", "D:")
尝试查找文件浏览器的路径(大多数情况下是Nautilus)

因此:


有关

urllib
的某些信息不理解SMB协议。您需要使用via pygobject来检索文件。

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
为了安全起见,可以将用户名和密码写入文件中。检查一下


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

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

Ok,但是。。。我想我没有解释清楚。我的python脚本正在Ubuntu上运行,我只想得到一个文件。此窗口计算机中没有服务。请使用您的部件的更新更新您的问题。你想特别打开一个文件吗?谢谢,我手头有这个解决方案。但我想在最后一种情况下使用它。不过还是谢谢你。在最后一种情况下,我将在windows(IIS)上安装web服务:(下面还有一个使用
smbclient
(不同于pysmb尝试重新实现SMB/CIFS)。如果
gvfs-fuse-daemon
正在运行,并且共享是否已在当前会话中装入。您可以通过检查
~/.gvfs
是否已装入并正在运行
gvfs-mount
来确保这一点,但为什么不直接使用GIO呢?
mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare