2012-02-25 134 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