Клиентская библиотека Python для WebDAV - PullRequest
23 голосов
/ 08 октября 2009

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

Ответы [ 7 ]

48 голосов
/ 30 августа 2012

Печально, что на этот вопрос («Какую библиотеку Python webdav использовать?»), Который наверняка интересует более одного человека, был принят несвязанный ответ («не используйте библиотеку Python webdav»). Ну, обычная проблема на Stackexchange.

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

9 голосов
/ 01 августа 2011

У меня просто была похожая потребность, и я закончил тестировать несколько клиентов 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 . Кажется, не имеет никакой функции загрузки.

2 голосов
/ 12 мая 2014
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")
1 голос
/ 09 октября 2009

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

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

0 голосов
/ 25 октября 2014

Установка:

$ 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")

Ссылки:

0 голосов
/ 09 октября 2009

У меня нет опыта работы с какой-либо из этих библиотек, но в индексе пакетов Python ("PyPi") перечислены довольно много модулей webdav .

0 голосов
/ 09 октября 2009

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

...