我想在我的應用程序中實現一項功能,該功能可以在WebDAV服務器上上載和操作文件。我正在尋找一個成熟的Python庫,它將提供一個類似於os.*
模塊的界面來處理遠程文件。谷歌搜索已經爲Python中的WebDAV選擇了一些選項,但我想知道哪些更廣泛使用這些天。用於WebDAV的Python客戶端庫
回答
我不知道任何具體的內容,但根據您的平臺,通過文件系統安裝和訪問WebDAV提供的文件可能會更簡單。這裏有davfs2,一些操作系統,如Mac OS X,內置了WebDAV文件系統支持。
我對這些庫沒有任何經驗,但Python Package Index(「PyPi」)lists quite a few webdav modules。
顯然你正在尋找一個WebDAV客戶端庫。
不知道極大數安打怎麼來了,似乎以下2看上去相關:
- PyDAV: http://users.sfo.com/~jdavis/Software/PyDAV/readme.html#client
- Zope的 - 和尋找client.py
我只是有類似的需求,並最終根據我的需求測試了幾個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。似乎沒有任何上傳功能。
thx用於分析,可能有些東西已經改變了sice - 1)python-webdav-lib和Python_WebDAV_Library-0.3.0是相同的 – mykhal 2012-08-07 09:55:23
上面引用的python-webdav-lib - 對我工作得非常好,是一個更好/更有用的答案比接受的要好。 – 2013-09-03 14:25:50
對於這個問題(「使用什麼Python webdav庫?」),這確實令人感興趣不止一個人,接受了無關答案(「不要使用Python webdav庫」),這很令人傷心。那麼,Stackexchange上的常見問題。
對於那些尋找真正答案的人來說,在給出原始問題(類似於「os」模塊的簡單API)中的要求之後,我可能會建議easywebdav,它具有非常簡單的API,甚至很好和簡單的實現,提供上傳/下載和少量文件/目錄管理方法。由於實施簡單,迄今爲止不支持目錄列表,但是該錯誤是filed,作者打算添加它。
目錄列表已經實現,你可以看到https://github.com/amnong/easywebdav/pull/4。 – Impiastro 2014-02-07 16:16:04
這個庫很棒。剛剛在小牛隊測試:ls,下載,上傳,甚至有一個「發送」私人功能,所以你可以發送任意獲取請求。適用於我和它的蟒蛇:) – chrisallick 2014-05-12 14:36:23
不幸的是它沒有Python 3的支持,並且不會處理pull請求。仍在尋找一個好的選擇... – blootsvoets 2016-05-26 10:59:55
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")
安裝:
$ 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")
鏈接:
- 1. 基於瀏覽器的WebDAV客戶端?
- 2. 用於Python 2.4的Websocket客戶端庫?
- 3. Pure HTML WebDAV客戶端
- 4. 的Dropbox類客戶端的WebDav
- 5. iOS緩存的Webdav客戶端
- 6. Android上的沙丁魚webdav客戶端
- 7. 尋找用於訪問WebDAV和SharePoint文件夾的.Net客戶端庫
- 8. python肥皂客戶端庫
- 9. python聊天客戶端庫
- 10. 在Android上實現WebDAV客戶端
- 11. JackRabbit Webdav客戶端與Httpclient 3.0兼容
- 12. 用於Python 3的SOAP客戶端
- 13. 用於WP7的gdata dotnet客戶端庫
- 14. 適用於iOS的GraphQL客戶端庫
- 15. 用於windows的Memcached客戶端庫
- 16. 帶客戶端的Android客戶端Python
- 17. 用於Twisted的Python Jabber/XMPP客戶端庫
- 18. 用於Python和Perl的WebService客戶端庫
- 19. Google AnalyticsAPI(用於Python的客戶端庫) - 錯誤處理
- 20. Google API客戶端庫用於Pub/Sub
- 21. 來自Python客戶端庫的GCS Rsync?
- 22. 關於Python SMTP客戶端的困惑
- 23. 用於異步客戶端到客戶端消息傳遞的庫
- 24. 用客戶端上正確的程序打開webdav鏈接
- 25. 用於BlackBerry應用程序的OAuth庫(用於Twitter客戶端)
- 26. 用於Google雲端存儲和大文件的Python客戶端
- 27. 硒Python客戶端庫 - 在後臺
- 28. Python網絡客戶端編程庫
- 29. 無法安裝gdata python庫客戶端
- 30. 最佳python XMPP/Jabber客戶端庫?
是的,那肯定是另一種選擇。如果我要安裝它,我不妨使用NFS,但安裝是我首先嚐試通過使用WebDAV避免的。 – 2009-10-09 16:45:03
對於安裝解決方案。這是解決這些問題的Unix方法。 @Kamil什麼是你反對安裝的論點,所以你決定找到一個WebDAV庫? – 2009-10-21 11:18:03
-1在安裝網絡文件系統(如s3,dav,sshfs)時,如果沒有考慮到這種用法(與NFS/SMB相比),它們在實踐中是永遠存在的問題的根源。瞬態網絡錯誤通常很少傳遞給應用程序或造成鎖定。驅動程序開發人員無法預見的訪問模式需要與服務器進行大量握手,從而導致不可接受的延遲,而其他方面的緩存往往會導致不一致。 – Juraj 2015-02-09 18:19:01