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() ожидает одну строку. Это приводит к ошибке, которую вы видите.

Другие вопросы по тегам