2012-02-25 35 views
0

我最近查看了Python的虛擬文件系統模塊(http://packages.python.org/fs/),並運行了一個關於如何正確使用它。Python - 如何正確讀取虛擬文件系統

我創建自己使用以下行的FTP虛擬文件系統:

from fs.ftpfs import FTPFS 

FTP = FTPFS(host='127.0.0.1', user='test1', passwd='test1', acct='', timeout=60, port=21, dircache=True) 

簡單吧?

現在我的問題是我將如何在這個文件系統內讀取另一個python腳本?例如,我正在使用PyWebDav,並將默認目錄設置爲「C:\ WebDir」。我如何設置它來查看我剛剛創建的虛擬文件系統?

任何幫助表示讚賞,謝謝!

編輯:

我試圖把這個作爲「目錄」爲pyWebDav:

from fs.ftpfs import FTPFS 
ftpServer = FTPFS(host='127.0.0.1', user='test1', passwd='test1', acct='', timeout=60, port=21, dircache=True) 
ftpServer = ftpServer.listdir(path='./', wildcard=None, full=True, absolute=True, dirs_only=False, files_only=False) 
directory = ftpServer 

剛運行後,我得到這個錯誤:

Traceback (most recent call last): 
    File "C:\Users\Dustin\Documents\ftpmirror\test.py", line 4, in <module> 
    server.run() 
    File "C:\Python27\lib\site-packages\pywebdav-0.9.4.1-py2.7.egg\DAVServer\server.py", line 369, in run 
    handler=handler) 
    File "C:\Python27\lib\site-packages\pywebdav-0.9.4.1-py2.7.egg\DAVServer\server.py", line 75, in runserver 
    if not os.path.isdir(directory): 
    File "C:\Python27\lib\genericpath.py", line 41, in isdir 
    st = os.stat(s) 
TypeError: coercing to Unicode: need string or buffer, list found 

只是想我會展示一些關於如何使用虛擬文件系統的例子,希望能夠讓事情變得更簡單。再次感謝!

回答

0

fs爲不同文件系統提供了一個通用接口。要利用它,您的程序需要使用該界面。 pyWebDav不使用該接口。它使用os.path函數。

listdir()返回列表文件,目錄,但os.path.isdir()需要單個字符串。它導致你看到的錯誤。

+0

有沒有辦法讓os看起來像是通過文件系統讀取?甚至是一個將OS功能轉換爲FS的庫? (還會去做一些Goolging。) – Dustin 2012-02-25 13:46:43

+0

@ Dboy1612:參見[公開FS對象](http://packages.python.org/fs/expose.html) – jfs 2012-02-25 13:54:02