我使用Ubuntu的蟒蛇2.5,並且有一臺機器在同一網絡中的文件夾名爲machine1
。該文件夾是共享的。打開Windows共享通過Linux機器
如何在該機器的特定文件夾中獲取文件?
我都試過了,沒有成功:
urllib.urlopen('\\machine1\folder\file.txt')
我使用Ubuntu的蟒蛇2.5,並且有一臺機器在同一網絡中的文件夾名爲machine1
。該文件夾是共享的。打開Windows共享通過Linux機器
如何在該機器的特定文件夾中獲取文件?
我都試過了,沒有成功:
urllib.urlopen('\\machine1\folder\file.txt')
Linux有一個叫做smbmount
utiliy,可以在包裝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。
如果你需要的東西完全蟒蛇看看pysmb。條款谷歌是python,smb,CIFS。
你應該尋找默認的文件瀏覽器。
然後你就可以執行過程,並通過你想作爲參數的文件夾中(SMB:// MACHINE1 /文件夾/)。
例如在Windows上,你會怎麼做:
execl("explorer.exe", "D:")
試圖尋找路徑到您的文件瀏覽器(大多數是鸚鵡螺的時間)。
所以:
execl("/bin/nautilus", "smb://.../")
一些信息上execl
urllib
不理解SMB協議。您將需要通過pygobject使用gio
才能檢索文件。
如果文件夾是共享的,我認爲它應該掛載在〜/ .gvfs中。也許你可以直接在路徑上使用open
,就像你在〜/ .gvfs中看到的那樣。
**如果**'gvfs-fuse-daemon'正在運行,並且** if **共享已在當前會話中掛載。你可以通過檢查'〜/ .gvfs'被掛載並運行'gvfs-mount'確保你能夠確保,但爲什麼不直接使用GIO呢? – ephemient 2010-03-10 22:57:16
謝謝,我有這個解決方案。但我想在最後一種情況下使用它。不過謝謝。在最後一種情況下,我將在Windows(IIS)上安裝Web服務。 :( – bluefoot 2010-03-10 20:39:24
還有http://pypi.python.org/pypi/PySmbClient在下面使用'smbclient'(與嘗試重新實現SMB/CIFS的pysmb不同)。 – ephemient 2010-03-10 23:00:41