Python - 如何正确读取虚拟文件系统
问题描述:
我最近查看了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
只是想我会展示一些关于如何使用虚拟文件系统的例子,希望能够让事情变得更简单。再次感谢!
答
fs
为不同文件系统提供了一个通用接口。要利用它,您的程序需要使用该界面。 pyWebDav
不使用该接口。它使用os.path
函数。
listdir()
返回列表文件,目录,但os.path.isdir()
需要单个字符串。它导致你看到的错误。
有没有办法让os看起来像是通过文件系统读取?甚至是一个将OS功能转换为FS的库? (还会去做一些Goolging。) – Dustin 2012-02-25 13:46:43
@ Dboy1612:参见[公开FS对象](http://packages.python.org/fs/expose.html) – jfs 2012-02-25 13:54:02