我最近查看了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
我想我会展示一些关于如何使用虚拟文件系统的示例,希望能让事情变得更轻松。再次感谢!
答案 0 :(得分:0)
fs
为不同的文件系统提供了一个通用接口。要利用它,您的程序需要使用该接口。 pyWebDav
不使用该界面。它使用os.path
函数。
listdir()
返回文件,目录的列表,但os.path.isdir()
需要一个字符串。它会导致您看到的错误。