0

我最近查看了 Python 的虚拟文件系统模块 (http://packages.python.org/fs/),并遇到了一个关于如何正确使用它的快速问题。

我使用以下几行创建了自己的 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

只是想我会展示一些关于我想如何使用虚拟文件系统的例子,希望能让事情变得更容易。再次感谢!

4

1 回答 1

0

fs为不同的文件系统提供通用接口。要利用它,您的程序需要使用该接口。pyWebDav不使用接口。它使用os.path函数。

listdir()返回文件、目录的列表,但os.path.isdir()需要一个字符串。它会导致您看到的错误。

于 2012-02-25T07:05:34.917 回答