web-dev-qa-db-ja.com

Python WebDAVのクライアントライブラリ

WebDAVサーバー上のファイルをアップロードして操作する機能の一部をアプリケーションに実装したいと思います。リモートファイルを操作するためのos.*モジュールに似たインターフェイスを提供する成熟したPythonライブラリを探しています。グーグルは、WebDAVのオプションのほんの一部を見つけました。 Pythonですが、最近広く使われているものを知りたいのですが。

25
Kamil Kisiel

具体的にはわかりませんが、プラットフォームによっては、ファイルシステムを介してWebDAVで提供されるファイルをマウントしてアクセスする方が簡単な場合があります。 davfs2 があり、Mac OS Xなどの一部のOSには、WebDAVファイルシステムのサポートが組み込まれています。

0
Ned Deily

確かに複数の人が興味を持っているこの質問( "What Python webdav library to use?"))に対して、無関係な回答が受け入れられたのは悲しいことです( "do n't use Python webdavライブラリ ")。そうですね、Stackexchangeでよくある問題です。

本当の答えを探していて、元の質問(「os」モジュールに似た単純なAPI)の要件を考えると、私は提案するかもしれません easywebdav 、これは非常に簡単なAPIを持ち、Niceとシンプルな実装で、アップロード/ダウンロードといくつかのファイル/ディレクトリ管理方法を提供します。実装が単純なため、これまでのところディレクトリリストはサポートされていませんが、そのバグは filed であり、作成者はこれを追加する予定です。

50
pfalcon

同様のニーズがあり、最終的にいくつかのPython WebDAVクライアントをテストしました(WebDAVサーバーからファイルをアップロードおよびダウンロードします)。これが私の経験の要約です。

1)私のために働いたのは python-webdav-lib です。

ドキュメントはそれほど多くありませんが、コード(特に例)をざっと見るだけで、コードを機能させる方法を理解できました。

2)PyDAV 0.21(私が見つけた最新リリース)は、例外として文字列を使用するため、Python 2.6では機能しません。後でさらに非互換性があると予想して、これを修正しようとしませんでした。

3) davclient 0.2. 。私はそれを見ましたが、ドキュメントには私が探していたAPIのレベル(ファイルのアップロードとダウンロード)が記載されていなかったため、これ以上詳しく調べませんでした。

4) Python_WebDAV_Library-0.3. 。アップロード機能がないようです。

9
khinsen
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")
2
chrisallick

どうやらあなたはWebDAVクライアントライブラリを探しています。

膨大な数のヒットがどのように発生したかはわかりませんが、次の2つが関連しているようです。

1
Gyuri

インストール:

$ 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")

リンク:

0
designerror

私はこれらのライブラリのいずれも使用した経験がありませんが、Python Package Index( "PyPi") かなりの数のwebdavモジュールをリストしています

0
dcrosta