Python - Как правильно читать виртуальные файловые системы - PullRequest
0 голосов
/ 25 февраля 2012

Недавно я заглянул в модуль Виртуальные файловые системы для 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 голосов
/ 25 февраля 2012

fs предоставляет общий интерфейс для различных файловых систем.Чтобы воспользоваться этим, вашей программе нужно использовать интерфейс.pyWebDav не использует интерфейс.Он использует os.path функции.

listdir() возвращает список файлов, каталогов, но os.path.isdir() ожидает одну строку.Это приводит к ошибке, которую вы видите.

...