Python - 如何正确读取虚拟文件系统

时间:2012-02-25 05:38:01

标签: python ftp filesystems webdav virtualfilesystem

我最近查看了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

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

1 个答案:

答案 0 :(得分:0)

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

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