Python - Как правильно читать виртуальные файловые системы
Недавно я заглянул в модуль Виртуальные файловые системы для 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 ответ
fs
обеспечивает общий интерфейс для различных файловых систем. Чтобы воспользоваться этим, вашей программе нужно использовать интерфейс. pyWebDav
не использует интерфейс Оно использует os.path
функции.
listdir()
возвращает список файлов, каталогов, но os.path.isdir()
ожидает одну строку. Это приводит к ошибке, которую вы видите.