用于WebDAV的Python客户端库
我想在我的应用程序中实现一项功能,在WebDAV服务器上上载和操作文件。我正在寻找一个成熟的Python库,它将提供一个类似于用于WebDAV的Python客户端库,python,client,webdav,Python,Client,Webdav,我想在我的应用程序中实现一项功能,在WebDAV服务器上上载和操作文件。我正在寻找一个成熟的Python库,它将提供一个类似于os.*模块的接口,用于处理远程文件。谷歌已经在Python中为WebDAV提供了一些选项,但我想知道哪些选项在最近得到了更广泛的使用 我不知道有什么特别的方法,但是,根据您的平台,通过文件系统装载和访问WebDAV服务的文件可能更简单。还有一些操作系统,比如Mac OS X,内置了WebDAV文件系统支持。我对这些库都没有经验,但是Python包索引(“PyPi”)。显
os.*
模块的接口,用于处理远程文件。谷歌已经在Python中为WebDAV提供了一些选项,但我想知道哪些选项在最近得到了更广泛的使用 我不知道有什么特别的方法,但是,根据您的平台,通过文件系统装载和访问WebDAV服务的文件可能更简单。还有一些操作系统,比如Mac OS X,内置了WebDAV文件系统支持。我对这些库都没有经验,但是Python包索引(“PyPi”)。显然你在寻找WebDAV客户端库
我不确定这数百万次点击是如何产生的,似乎以下2项看起来很相关:
- PyDAV:
- Zope-并查找client.py
4) 。似乎没有任何上传功能。对于这个问题(“使用什么Python webdav库?”)(当然不止一个人对此感兴趣),令人遗憾的是,不相关的答案被接受(“不要使用Python webdav库”)。Stackexchange上的常见问题 对于那些想要寻找真正答案的人,并且考虑到原始问题中的要求(类似于“os”模块的简单API),我可能会建议,它有非常简单的API,甚至是漂亮简单的实现,提供上传/下载和很少的文件/目录管理方法。由于实现简单,目前为止它还不支持目录列表,但它的错误是,作者打算添加它。安装:
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")
链接:
- 源代码
- 小包