Подтвердить что ты не робот

Клиентская библиотека Python для WebDAV

Я хотел бы реализовать часть своего приложения, которое загружает и обрабатывает файлы на сервере WebDAV. Я ищу зрелую библиотеку Python, которая даст интерфейс, похожий на модули os.* для работы с удаленными файлами. Googling получил множество вариантов для WebDAV в Python, но я хотел бы знать, какие из них более широко используются в наши дни.

4b9b3361

Ответ 1

Я не знаю ничего конкретного, но, в зависимости от вашей платформы, может быть проще подключиться и получить доступ к файлам, поддерживаемым WebDAV, через файловую систему. Там davfs2, а некоторые ОС, такие как Mac OS X, имеют встроенную поддержку файловой системы WebDAV.

Ответ 2

Печально, что для этого вопроса ( "Что использовать библиотеку python webdav?" ), который наверняка интересует более одного человека, был принят несвязанный ответ ( "не используйте Python webdav library" ). Ну, общая проблема в Stackexchange.

Для людей, которые будут искать ответы на реальные вопросы, и учитывая требования в исходном вопросе (простой API, аналогичный модулю "os" ), я могу предложить easywebdav, который имеет очень простой API и даже приятную и простую реализацию, предлагая загрузку/загрузку и несколько методов управления файлами/каталогами. Из-за простой реализации он пока не поддерживает список каталогов, но ошибка для этого была filed, и автор намеревается ее добавить.

Ответ 3

У меня была аналогичная потребность, и я тестировал несколько клиентов Python WebDAV для своих нужд (загрузка и загрузка файлов с сервера WebDAV). Вот резюме моего опыта:

1) Тот, который работал у меня, python-webdav-lib.

Не так много документации, но быстрый просмотр кода (в частности, пример) был достаточным, чтобы выяснить, как заставить его работать для меня.

2) PyDAV 0.21 (последний релиз, который я нашел) не работает с Python 2.6, потому что он использует строки как исключения. Я не пытался это исправить, ожидая дальнейшей несовместимости позже.

3) davclient 0.2.0. Я посмотрел на него, но не исследовал дальше, потому что в документации не упоминался уровень API, который я искал (загрузка и загрузка файлов).

4) Python_WebDAV_Library-0.3.0. Кажется, у вас нет функций загрузки.

Ответ 4

import easywebdav

webdav = easywebdav.connect(
    host='dav.dumptruck.goldenfrog.com',
    username='_snip_',
    port=443,
    protocol="https",
    password='_snip_')

_file = "test.py"

print webdav.cd("/dav/")
# print webdav._get_url("")
# print webdav.ls()
# print webdav.exists("/dav/test.py")
# print webdav.exists("ECS.zip")
# print webdav.download(_file, "./"+_file)
print webdav.upload("./test.py", "test.py")

Ответ 5

Видимо, вы ищете клиентскую библиотеку WebDAV.

Не уверен, как появились газиллионные хиты, кажется, что следующие 2 выглядят актуальными:

Ответ 7

Установка:

$ sudo apt-get install libxml2-dev libxslt-dev python-dev
$ sudo apt-get install libcurl4-openssl-dev python-pycurl
$ sudo easy_install webdavclient

Примеры:

import webdav.client as wc

options = {
  'webdav_hostname': "https://webdav.server.ru",
  'webdav_login': "login",
  'webdav_password': "password"
}

client = wc.Client(options)

client.check("dir1/file1")
client.info("dir1/file1")

files = client.list()
free_size = client.free()

client.mkdir("dir1/dir2")
client.clean("dir1/dir2")

client.copy(remote_path_from="dir1/file1", remote_path_to="dir2/file1")
client.move(remote_path_from="dir1/file1", remote_path_to="dir2/file1")

client.download_sync(remote_path="dir1/file1", local_path="~/Downloads/file1")
client.upload_sync(remote_path="dir1/file1", local_path="~/Documents/file1")
client.download_async(remote_path="dir1/file1", local_path="~/Downloads/file1", callback=callback)
client.upload_async(remote_path="dir1/file1", local_path="~/Documents/file1", callback=callback)

link = client.publish("dir1/file1")
client.unpublish("dir1/file1")

Ссылки: