WebDAV 서버에서 파일을 업로드하고 조작하는 기능을 응용 프로그램에 구현하고 싶습니다. 원격 파일 작업을위한 os.*
모듈과 비슷한 인터페이스를 제공하는 성숙한 Python 라이브러리를 찾고 있습니다. 인터넷 검색은 파이썬에서 WebDAV에 대한 선택지가 무섭게 나타 났지만 요즘 널리 사용되고있는 것을 알고 싶습니다.WebDAV 용 Python 클라이언트 라이브러리
답변
구체적으로 모르겠지만 플랫폼에 따라 파일 시스템을 통해 WebDAV가 제공하는 파일을 마운트하고 액세스하는 것이 더 간단 할 수 있습니다. davfs2이 있으며 Mac OS X과 같은 일부 OS에는 WebDAV 파일 시스템 지원 기능이 내장되어 있습니다.
이 라이브러리에 대한 경험은 없지만 Python 패키지 인덱스 (PyPi) lists quite a few webdav modules은 사용 경험이 없습니다.
분명히 WebDAV 클라이언트 라이브러리를 찾고 있습니다.
gazillion 히트가 온 방법 확실하지, 다음이 관련 보이는 것 같다
- PyDAV : http://users.sfo.com/~jdavis/Software/PyDAV/readme.html#client
- 조프 - 단지 및 client.py 을 찾아
내가 비슷한 요구가 있었고, 필자의 필요에 맞게 파이썬 WebDAV 클라이언트를 테스트 해 보았습니다. (WebDAV 서버에서 파일을 업로드하고 다운로드하는 것). 내 경험에 대한 요약은 다음과 같습니다.
1) 나를 위해 일한 것은 python-webdav-lib입니다.
문서는별로 없지만 코드 (특히 예제)를 빠르게 살펴보면 어떻게 작동하는지 알 수 있습니다.
2) PyDAV 0.21 (내가 발견 한 최신 릴리스)은 문자열을 예외로 사용하기 때문에 Python 2.6에서 작동하지 않습니다. 나중에 더 많은 비 호환성을 예상하면서이를 고치려고하지는 않았습니다.
3) davclient 0.2.0. 나는 그것을 보았지만 didn 's는 문서가 내가 찾고있는 API의 수준 (파일 업로드 및 다운로드)을 언급하지 않았기 때문에 더 이상 탐색하지 않았다.
4) Python_WebDAV_Library-0.3.0. 업로드 기능이없는 것 같습니다.
분석을 위해, 아마도 몇 가지가 sice를 바꿨습니다 - 1) python-webdav-lib와 Python_WebDAV_Library-0.3.0은 동일합니다. – mykhal
python-webdav-lib는 위에서 언급 한 것입니다. 저에게 매우 잘 맞았으며 훨씬 더 유용했습니다. 받아 들인 것보다. –
"파이썬 webdav 라이브러리는 사용 하시겠습니까?"라는 질문에 대해서는 한 명 이상의 사람들에게 관련이없는 대답이 허용되었습니다 ("Python webdav library를 사용하지 마십시오"). 글쎄, Stackexchange의 일반적인 문제.
원래 질문 (간단한 API는 "os"모듈과 유사 함)에서 요구 사항을 얻는 사람들에게 실질적인 대답을 찾고, 매우 쉬운 API와 훌륭하고 간단한 구현을 제공하는 easywebdav을 제안 할 수 있습니다. 업로드/다운로드 및 파일/디렉토리 관리 방법이 거의 없습니다. 간단한 구현으로 인해 지금까지 디렉터리 목록을 지원하지 않지만 그 버그는 filed이었으며 작성자가 추가하려고합니다.
https://github.com/amnong/easywebdav/pull/4에서 볼 수 있듯이 디렉토리 목록이 구현되었습니다. – Impiastro
이 라이브러리는 훌륭합니다. 그냥 Mavericks에서 테스트했습니다 : ls, 다운로드, 업로드하고 임의의 get 요청을 보낼 수 있도록 "보내기"개인 기능이 있습니다. 나를위한 작품과 파이썬이야 :) – chrisallick
불행히도 그것은 파이썬 3 지원을 가지고 있지 않으며, 풀 요청은 처리되지 않습니다. 아직도 좋은 대안을 찾고 ... – 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")
설치 :
$ 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. wsgi/python 용 webdav?
- 2. Python 및 Perl 용 WebService 클라이언트 라이브러리
- 3. Twisted 용 Python Jabber/XMPP 클라이언트 라이브러리
- 4. Python 웹 클라이언트 프로그래밍 라이브러리
- 5. PHP iDisk \ Webdav 클라이언트
- 6. 브라우저 기반 WebDAV 클라이언트?
- 7. android에서 WebDAV 클라이언트 구현
- 8. Windows 용 Memcached 클라이언트 라이브러리
- 9. Python 용 Amazon API 라이브러리?
- 10. Python 용 기본 금융 라이브러리
- 11. Exchange 용 WebDAV 쿼리
- 12. SSL을 지원하는 간단한 Python IRC 클라이언트 라이브러리?
- 13. 클라이언트/서버 응용 프로그램 용 .NET 라이브러리?
- 14. WP7 용 gdata dotnet 클라이언트 라이브러리
- 15. BlackBerry 앱용 OAuth 라이브러리 (트위터 클라이언트 용)
- 16. mootools 용 클라이언트 측 템플릿 라이브러리?
- 17. Python (Django) Shopify API 클라이언트 - 초보자 용
- 18. Windows/Gnome 용 Python GUI 라이브러리
- 19. kestrel 대기열 시스템 용 python 라이브러리
- 20. Microsoft Active Accessibility 라이브러리 용 Python 패키지?
- 21. 정적 라이브러리 용 SWIG Python 래퍼 컴파일?
- 22. OpenWRT XMPP 클라이언트 라이브러리?
- 23. Python HTTP 라이브러리 검색
- 24. 파이썬 채팅 클라이언트 라이브러리
- 25. J2ME 호환 WebDAV 라이브러리 란 무엇입니까?
- 26. Ruby 용 XMPP 라이브러리
- 27. 컴파일러 최적화를 실험하기위한 Python 라이브러리
- 28. 작업 스케줄링을위한 Python 라이브러리,
- 29. 키로 HTTPS 연결을 사용하는 Python SOAP 클라이언트 라이브러리
- 30. WebDAV 업로드 용 명령 줄 유틸리티
네, 물론 다른 옵션입니다. 마운트 할 예정이라면 NFS를 사용할 수도 있지만 마운팅은 처음부터 WebDAV를 사용하여 피하려고하는 것입니다. –
마운트 솔루션 +1. 이 문제를 해결하는 유닉스 방식이다. @ 카밀 당신이 WebDAV 라이브러리를 찾기로 결정한 마운트에 대한 당신의 주장은 무엇입니까? –
-1 s3, dav, sshfs 같은 마운트 네트워크 파일 시스템 (NFS/SMB와 비교하여)을 염두에두고 작성된 이러한 사용법은 실제로 문제의 근원이 될 수 없습니다. 일시적인 네트워크 오류는 일반적으로 응용 프로그램에 매우 잘 전달되지 않거나 잠김 현상이 발생합니다. 드라이버 개발자가 예상하지 못한 액세스 패턴은 서버와의 광범위한 핸드 셰이크를 필요로하므로 수용 할 수없는 대기 시간이 발생하고 다른 캐시에서는 불일치가 발생하는 경향이 있습니다. – Juraj