Chciałbym zaimplementować w mojej aplikacji element funkcji, który ładuje i manipuluje plikami na serwerze WebDAV. Szukam dojrzałej biblioteki Pythona, która dałaby interfejs podobny do modułów os.*
do pracy ze zdalnymi plikami. Googling okazał się niewielkim wyborem opcji dla WebDAV w Pythonie, ale chciałbym się dowiedzieć, które z nich są obecnie szersze.Biblioteka klienta Pythona dla WebDAV
Odpowiedz
Nie znam konkretnego, ale w zależności od platformy może być łatwiejsze podłączenie i dostęp do plików obsługiwanych przez WebDAV za pośrednictwem systemu plików. Jest tam davfs2, a niektóre systemy operacyjne, takie jak Mac OS X, mają wbudowaną obsługę systemu plików WebDAV.
Nie mam doświadczenia z żadną z tych bibliotek, ale z indeksem pakietów Python ("PyPi") lists quite a few webdav modules.
Najwyraźniej szukasz biblioteki klienta WebDAV.
Nie wiem, jak trafienia gazillion wymyślił, wydaje się, że po 2 wygląda istotne:
- PyDAV: http://users.sfo.com/~jdavis/Software/PyDAV/readme.html#client
- Zope - i poszukać client.py
Właśnie Miał podobną potrzebę i zakończył testowanie kilku klientów WebDAV Pythona dla moich potrzeb (przesyłanie i pobieranie plików z serwera WebDAV). Oto podsumowanie mojego doświadczenia:
1) Ten, który zadziałał dla mnie to python-webdav-lib.
Niezbyt dużo dokumentacji, ale szybkie spojrzenie na kod (w szczególności przykład) wystarczyło, aby dowiedzieć się, jak sprawić, by działało to dla mnie.
2) PyDAV 0.21 (najnowsza wersja, którą znalazłem) nie działa z Pythonem 2.6, ponieważ używa łańcuchów jako wyjątków. Nie próbowałem tego naprawić, spodziewając się później dalszych niezgodności.
3) davclient 0.2.0. Patrzyłem na to, ale nie zgłębiałem, ponieważ w dokumentacji nie wspomniano o poziomie API, którego szukałem (przesyłanie i pobieranie plików).
4) Python_WebDAV_Library-0.3.0. Wygląda na to, że nie ma żadnej funkcji przesyłania.
thx do analizy, prawdopodobnie niektóre rzeczy zmieniły sice - 1) python-webdav-lib i Python_WebDAV_Library-0.3.0 są identyczne – mykhal
Python-webdav-lib wymienione powyżej - działało bardzo dobrze dla mnie i było o wiele lepsze/bardziej przydatna odpowiedź niż zaakceptowany. –
To smutne, że na to pytanie ("Jakiej biblioteki internetowej Python się posługiwać?"), Które z pewnością dotyczy więcej niż jednej osoby, przyjęto niepowiązaną odpowiedź ("nie używaj biblioteki webdav Pythona"). Cóż, powszechny problem z Stackexchange.
Dla osób, które będą szukały prawdziwych odpowiedzi i podają wymagania w pierwotnym pytaniu (prosty interfejs API podobny do modułu "os"), mogę zasugerować easywebdav, który ma bardzo łatwe API, a nawet ładną i prostą implementację, oferowanie przesyłania/pobierania oraz kilka metod zarządzania plikami/serwerami. Ze względu na prostą implementację, do tej pory nie obsługuje listingów katalogu, ale błąd w tym był filed, a autor zamierza go dodać.
Wykaz aukcji został zaimplementowany, jak widać https://github.com/amnong/easywebdav/pull/4. – Impiastro
Ta biblioteka działa świetnie. Po prostu przetestowano na Mavericks: ls, download, upload i jest nawet prywatna funkcja "send", dzięki czemu możesz wysyłać dowolne żądania pobierania. Działa dla mnie i to jest pyton :) – chrisallick
Niestety nie ma obsługi Pythona 3, a żądania ściągania nie są przetwarzane. Nadal szukam dobrej alternatywy ... – 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")
Instalacja:
$ sudo apt-get install libxml2-dev libxslt-dev python-dev
$ sudo apt-get install libcurl4-openssl-dev python-pycurl
$ sudo easy_install webdavclient
Przykłady:
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")
Linki:
- 1. Biblioteka klienta Python Jabber/XMPP dla Twisted
- 2. Biblioteka Amazon API dla Pythona?
- 3. MS Access biblioteka dla Pythona
- 4. Biblioteka analizy SQL dla Pythona
- 5. Najlepsza biblioteka klienta XMPP dla Node.js
- 6. Biblioteka klienta VNC dla platformy Cross?
- 7. Czysty klient HTML WebDAV
- 8. Biblioteka konfiguracji Pythona
- 9. Pytanie klienta/serwera Pythona
- 10. Biblioteka klienta/serwera Java RTSP
- 11. Problemy z WebDav dla restfull usługi WCF
- 12. Czy istnieje biblioteka klienta CalDAV dla języka Java?
- 13. Czy istnieje biblioteka klienta MS-DRM dla systemu Linux?
- 14. Dobra bezpłatna biblioteka klienta FTP (dla komercyjnych aplikacji Windows C++)?
- 15. Biblioteka Pythona do filtrowania XSS?
- 16. Biblioteka Pythona do dzielenia wideo
- 17. .Net WebDAV Server
- 18. Czy dla Pythona istnieje biblioteka funkcji związanych z podstawowymi elementami?
- 19. Czy istnieje biblioteka testowa podobna do Spocka dla Pythona
- 20. Odpowiednik Passport.js dla Pythona?
- 21. Czy standardowa biblioteka Pythona jest naprawdę standardowa?
- 22. Jak przetestować klienta API za pomocą Pythona?
- 23. Biblioteka RTMP dla Windows Phone
- 24. Biblioteka Pythona do generowania plików VCF?
- 25. Czy istnieje biblioteka Pythona do obsługi OWL?
- 26. Biblioteka Pythona do zarządzania procesami Linux
- 27. Biblioteka Pythona do parsowania regex do AST?
- 28. Czysta biblioteka Pythona do generowania identyfikatorów?
- 29. Biblioteka Pythona do generowania wyrażeń regularnych
- 30. Jakieś alternatywy Open Source dla Dreamweaver za pomocą WebDav?
Tak, to z pewnością kolejna opcja. Jeśli mam zamiar go zamontować, równie dobrze mógłbym użyć NFS, ale przede wszystkim to, czego starałem się uniknąć, to użycie WebDAV. –
+1 dla rozwiązania mocowania. Jest to uniksowy sposób rozwiązywania takich problemów. @Kamil Jakie były twoje argumenty przeciwko montowaniu, więc zdecydowałeś się znaleźć bibliotekę WebDAV? –
-1 Montaż sieciowych systemów plików takich jak s3, dav, sshfs, które nie zostały zbudowane z myślą o takim użyciu (w porównaniu z NFS/SMB) są nieodłącznym źródłem problemów w praktyce. Przejściowe błędy sieciowe są zwykle bardzo słabo przekazywane do aplikacji lub powodują blokady. Dostęp do wzorców nieprzewidzianych przez programistę sterowników wymaga rozległych uścisków dłoni z serwerem, a tym samym niedopuszczalnych opóźnień, a inne pamięci podręczne zwykle powodują niespójności. – Juraj