Tôi muốn triển khai một phần chức năng trong ứng dụng của mình để tải lên và thao tác các tệp trên máy chủ WebDAV. Tôi đang tìm một thư viện Python trưởng thành sẽ cung cấp một giao diện tương tự như các mô-đun os.*
để làm việc với các tệp từ xa. Googling đã bật lên một loạt các tùy chọn cho WebDAV trong Python, nhưng tôi muốn biết được sử dụng rộng rãi hơn những ngày này.Thư viện ứng dụng khách Python cho WebDAV
Trả lời
Tôi không biết cụ thể nhưng, tùy thuộc vào nền tảng của bạn, có thể đơn giản hơn để gắn kết và truy cập các tệp được phân phát qua WebDAV thông qua hệ thống tệp. Có davfs2 ngoài đó và một số hệ điều hành, như Mac OS X, có hỗ trợ hệ thống tệp WebDAV được tích hợp.
Tôi không có kinh nghiệm với bất kỳ thư viện nào, nhưng chỉ mục gói Python ("PyPi") lists quite a few webdav modules.
Dường như bạn đang tìm thư viện ứng dụng khách WebDAV.
Không chắc như thế nào hits gazillion đã đưa ra, có vẻ như 2 sau trông có liên quan:
- PyDAV: http://users.sfo.com/~jdavis/Software/PyDAV/readme.html#client
- Zope - và tìm kiếm client.py
Tôi chỉ có nhu cầu tương tự và kết thúc thử nghiệm một vài ứng dụng WebDAV Python cho các nhu cầu của tôi (tải lên và tải xuống các tệp từ máy chủ WebDAV). Dưới đây là tóm tắt trải nghiệm của tôi:
1) Tài khoản đã làm việc cho tôi là python-webdav-lib.
Không có nhiều tài liệu, nhưng xem nhanh mã (cụ thể là ví dụ) là đủ để tìm ra cách làm cho nó hoạt động cho tôi.
2) PyDAV 0.21 (bản phát hành mới nhất mà tôi tìm thấy) không hoạt động với Python 2.6 vì nó sử dụng chuỗi làm ngoại lệ. Tôi đã không cố gắng sửa lỗi này, mong đợi thêm sự không tương thích sau này.
3) davclient 0.2.0. Tôi nhìn vào nó nhưng didn của khám phá thêm nữa bởi vì các tài liệu đã không đề cập đến mức API tôi đang tìm kiếm (tải lên tập tin và tải về).
4) Python_WebDAV_Library-0.3.0. Dường như không có bất kỳ chức năng tải lên nào.
thx để phân tích, có thể một số thứ đã thay đổi sice - 1) python-webdav-lib và Python_WebDAV_Library-0.3.0 giống hệt nhau – mykhal
python-webdav-lib được tham chiếu ở trên - hoạt động rất tốt cho tôi và là một câu trả lời hay hơn/hữu ích hơn nhiều hơn cái được chấp nhận. –
Thật đáng buồn vì câu hỏi này ("Thư viện webdav Python sử dụng?"), Để đảm bảo quyền lợi nhiều hơn một người, câu trả lời không liên quan đã được chấp nhận ("không sử dụng thư viện webdav Python"). Vâng, vấn đề phổ biến trên Stackexchange.
Đối với những người sẽ tìm kiếm câu trả lời thực và đưa ra các yêu cầu trong câu hỏi gốc (API đơn giản tương tự như mô-đun "os"), tôi có thể đề xuất easywebdav, API này rất dễ dàng và thậm chí thực hiện tốt đẹp và đơn giản, cung cấp tải lên/tải xuống và vài phương pháp quản lý tệp/dir. Do thực hiện đơn giản, nó cho đến nay không hỗ trợ danh sách thư mục, nhưng lỗi cho đó là filed và tác giả dự định thêm nó.
Danh sách thư mục đã được triển khai khi bạn có thể xem https://github.com/amnong/easywebdav/pull/4. – Impiastro
Thư viện này hoạt động rất tốt. Chỉ cần thử nghiệm trên Mavericks: ls, tải xuống, tải lên và thậm chí có một "gửi" chức năng riêng tư để bạn có thể gửi yêu cầu nhận được tùy ý. Làm việc cho tôi và nó là python :) – chrisallick
Thật không may nó không có hỗ trợ Python 3, và kéo yêu cầu không được xử lý. Vẫn đang tìm kiếm giải pháp thay thế tốt ... – 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")
Install:
$ sudo apt-get install libxml2-dev libxslt-dev python-dev
$ sudo apt-get install libcurl4-openssl-dev python-pycurl
$ sudo easy_install webdavclient
Ví dụ:
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")
Links:
- Source code here
- gói 01.
- 1. Thư viện phía máy khách Java WebDAV
- 2. Ứng dụng WebDAV thuần túy HTML WebDAV
- 3. Thư viện ứng dụng khách EMail
- 4. Thư viện ứng dụng Python Jabber/XMPP cho Twisted
- 5. Thư viện ứng dụng khách VNC trên nền tảng chéo?
- 6. Ứng dụng PHP iDisk \ Webdav
- 7. Thư viện ứng dụng khách Selenium-Python - Tự động hóa trong nền
- 8. Thư viện Python/Khung để viết các ứng dụng P2P
- 9. Ứng dụng web Thư viện dựa trên Python?
- 10. Thư viện Git cho Ruby hoặc Python?
- 11. Thư viện ứng dụng khách XMPP/Jabber tốt cho .NET 3.5 (hoặc 4.0)
- 12. Thư viện khách hàng XMPP/Jabber python tốt nhất?
- 13. Sử dụng thư viện Scala cho ứng dụng Android
- 14. Thư viện Python BitTorrent
- 15. Thư viện máy khách REST trong C
- 16. Thư viện Java nào có thể được sử dụng để truy cập dữ liệu qua WebDAV?
- 17. Thư viện hình ảnh cho Python 3
- 18. Thư viện API Amazon cho Python?
- 19. Thư viện như fakeweb cho Python
- 20. Ứng dụng khách web web Python
- 21. Thư viện máy khách SOAP hạng nhẹ cho Java
- 22. thư viện python cho người dùng nhập
- 23. Có thư viện máy khách MS-DRM cho Linux không?
- 24. Thư viện khách hàng SOAP tốt cho python trên App Engine là gì?
- 25. Thư viện PDF nguồn mở cho ứng dụng C/C++?
- 26. Thư viện nén C++ (zip) cho ứng dụng nguồn đóng
- 27. Thư viện .NET hoặc ứng dụng asp.net cho Amazon S3
- 28. Thư viện máy khách XMPP tốt nhất cho Node.js
- 29. Có thư viện máy khách CalDAV cho Java không?
- 30. Thư viện máy khách socket.io ở đâu?
Vâng, đó chắc chắn là một tùy chọn khác. Nếu tôi sẽ gắn nó, tôi cũng có thể sử dụng NFS, nhưng gắn kết là những gì tôi đã cố gắng tránh bằng cách sử dụng WebDAV ở nơi đầu tiên. –
+1 cho giải pháp gắn kết. Đây là cách giải quyết vấn đề Unix. @Kamil Các đối số của bạn chống lại việc gắn kết để bạn quyết định tìm một thư viện WebDAV là gì? –
-1 Gắn kết các hệ thống tập tin mạng như s3, dav, sshfs không được xây dựng với cách sử dụng như vậy (so với NFS/SMB) đang bao giờ xảy ra vấn đề trong thực tế. Lỗi mạng tạm thời thường rất kém được truyền đạt đến ứng dụng hoặc gây ra sự khóa. Truy cập patters không được dự đoán bởi nhà phát triển trình điều khiển yêu cầu bắt tay rộng rãi với máy chủ và do đó không thể chấp nhận độ trễ, trên bộ nhớ cache bên khác có xu hướng gây ra mâu thuẫn. – Juraj