Me gustaría implementar una funcionalidad en mi aplicación que carga y manipula archivos en un servidor WebDAV. Estoy buscando una biblioteca de Python madura que ofrezca una interfaz similar a los módulos os.*
para trabajar con los archivos remotos. Google ha encontrado algunas opciones para WebDAV en Python, pero me gustaría saber cuáles son las más utilizadas actualmente.Biblioteca de cliente Python para WebDAV
Respuesta
No conozco ninguno específicamente pero, dependiendo de su plataforma, puede ser más sencillo montar y acceder a los archivos servidos por WebDAV a través del sistema de archivos. Hay davfs2 por ahí y algunos sistemas operativos, como Mac OS X, tiene el apoyo del sistema de archivos WebDAV incorporado.
no tengo experiencia con cualquiera de estas bibliotecas, pero el índice de Python Package ("PyPi") lists quite a few webdav modules.
Aparentemente está buscando una biblioteca de cliente WebDAV.
No sabe cómo los éxitos tropecientos ocurrió, parece el siguiente 2 parece relevante:
- PyDAV: http://users.sfo.com/~jdavis/Software/PyDAV/readme.html#client
- Zope - y buscar client.py
acabo tuve una necesidad similar y terminé probando algunos clientes de Python WebDAV para mis necesidades (cargando y descargando archivos de un servidor WebDAV). Aquí hay un resumen de mi experiencia:
1) La que funcionó para mí es python-webdav-lib.
No hay mucha documentación, pero un vistazo rápido al código (en particular el ejemplo) fue suficiente para encontrar la manera de hacerlo funcionar.
2) PyDAV 0.21 (la última versión que encontré) no funciona con Python 2.6 porque usa cadenas como excepciones. No intenté arreglar esto, esperando más incompatibilidades más adelante.
3) davclient 0.2.0. Lo miré pero no exploré más porque la documentación no mencionaba el nivel de API que estaba buscando (carga y descarga de archivos).
4) Python_WebDAV_Library-0.3.0. No parece tener ninguna funcionalidad de carga.
thx para el análisis, probablemente algunas cosas han cambiado sice - 1) python-webdav-lib y Python_WebDAV_Library-0.3.0 son idénticas – mykhal
python-webdav-lib referenciadas anteriormente - funcionó muy bien para mí y fue una respuesta mucho mejor/más útil que el aceptado. –
Es triste que para esta pregunta ("¿Qué biblioteca webdav de Python usar?"), Que seguro interesa a más de una persona, se aceptó la respuesta no relacionada ("no use la biblioteca webdav de Python"). Bueno, problema común en Stackexchange.
Para las personas que estarán buscando respuestas reales y teniendo en cuenta los requisitos de la pregunta original (API simple similar al módulo "os"), puedo sugerir easywebdav, que tiene API muy sencilla e incluso una implementación sencilla y sencilla ofreciendo carga/descarga y pocos métodos de administración de archivos/directorios. Debido a la implementación simple, hasta ahora no es compatible con la lista de directorios, pero el error fue filed, y el autor tiene la intención de agregarlo.
Se ha implementado la publicación del directorio como puede ver https://github.com/amnong/easywebdav/pull/4. – Impiastro
Esta biblioteca funciona muy bien. Acabo de probar en Mavericks: ls, descargar, cargar e incluso hay una función privada de "envío" para que pueda enviar solicitudes de obtención arbitrarias. Funciona para mí y es python :) – chrisallick
Desafortunadamente no tiene soporte para Python 3, y las solicitudes de extracción no se procesan. Todavía estoy buscando una buena alternativa ... – blootsvoets
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")
Instalar:
$ sudo apt-get install libxml2-dev libxslt-dev python-dev
$ sudo apt-get install libcurl4-openssl-dev python-pycurl
$ sudo easy_install webdavclient
Ejemplos:
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")
Enlaces:
- 1. PHP iDisk \ Webdav Cliente
- 2. Cliente HTML WebDAV puro
- 3. ¿Cliente WebDAV basado en navegador?
- 4. Biblioteca cliente Python Jabber/XMPP para Twisted
- 5. Biblioteca de cliente de Socket.IO en Python
- 6. Biblioteca de cliente de Selenium-Python - Automatización en el fondo
- 7. ¿Puede recomendar alguna biblioteca de cliente http python?
- 8. ¿Una biblioteca de cliente Python IRC simple que admite SSL?
- 9. ¿La mejor biblioteca de cliente Python XMPP/Jabber?
- 10. La mejor biblioteca cliente XMPP para Node.js
- 11. Biblioteca de cliente de EMail
- 12. ¿Biblioteca de Git para Ruby o Python?
- 13. Cliente SOAP para Python 3
- 14. JavaScript RESTO Biblioteca cliente
- 15. Biblioteca de código abierto en C# para comunicarse con un servidor WebDAV
- 16. .NET WebDAV Server
- 17. Biblioteca financiera básica para Python
- 18. ¿Qué es una buena biblioteca de cliente SOAP para python en App Engine?
- 19. Biblioteca como fakeweb para Python
- 20. wget-like bittorrent cliente o biblioteca?
- 21. ¿Biblioteca de cliente SNMP fácil de usar para C++?
- 22. Biblioteca ActiveSync de Python Exchange
- 23. CMIS vs. WebDAV
- 24. Biblioteca de BitTorrent de Python
- 25. ¿Existe una biblioteca de cliente CalDAV para Java?
- 26. ¿Hay una biblioteca cliente de MS-DRM para Linux?
- 27. biblioteca de servicio Web (SOAP) cliente genérico para C++
- 28. mysql2 joya compilado para la biblioteca cliente de MySQL mal
- 29. Biblioteca de API de Amazon para Python?
- 30. Biblioteca de cliente REST en C
Sí, esa es sin duda otra opción. Si voy a montarlo, también podría usar NFS, pero el montaje es lo que estaba tratando de evitar con el uso de WebDAV en primer lugar. –
+1 para la solución de montaje. Esta es la manera en que Unix resuelve estos problemas. @Kamil ¿Cuáles fueron sus argumentos en contra del montaje, por lo que decidió buscar una biblioteca WebDAV? –
-1 El montaje de sistemas de archivos de red como s3, dav, sshfs que no se crearon con ese uso en mente (en comparación con NFS/SMB) son una fuente interminable de problemas en la práctica. Los errores de red transitorios generalmente son muy poco comunicados a la aplicación o causan bloqueos. Los patrones de acceso imprevistos por el desarrollador del controlador requieren amplios apretones de manos con el servidor y, por lo tanto, latencias inaceptables, en otros cachés laterales tienden a causar inconsistencias. – Juraj