代码之家  ›  专栏  ›  技术社区  ›  Kamil Kisiel

用于WebDAV的python客户端库

  •  23
  • Kamil Kisiel  · 技术社区  · 15 年前

    我想在我的应用程序中实现一项功能,在WebDAV服务器上上载和操作文件。我正在寻找一个成熟的python库,它将提供类似于 os.* 用于处理远程文件的模块。googling在python中为webdav提供了一些选项,但我想知道现在哪些选项在更广泛的使用中。

    7 回复  |  直到 10 年前
        1
  •  0
  •   Ned Deily    15 年前

    我不知道具体情况,但是,根据您的平台,通过文件系统装载和访问WebDAV提供的文件可能更简单。有 davfs2 在外面,一些操作系统,比如MacOSX,内置了WebDAV文件系统支持。

        2
  •  47
  •   pfalcon    12 年前

    对于这个问题(“要使用什么样的python webdav库?”)感到遗憾。这肯定让不止一个人感兴趣,不相关的答案被接受了(“不要使用python webdav库”)。嗯,StackExchange的常见问题。

    对于那些将寻找真实答案的人,考虑到原始问题中的要求(类似于“OS”模块的简单API),我建议 easywebdav 它的API非常简单,实现也非常简单,提供了上传/下载和很少的文件/dir管理方法。由于实现简单,目前还不支持目录列表,但其缺陷是 filed ,作者打算添加它。

        3
  •  9
  •   joar    12 年前

    我只是有一个类似的需求,最后测试了一些PythonWebDAV客户机来满足我的需求(从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 .似乎没有任何上载功能。

        4
  •  2
  •   chrisallick    10 年前
    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")
    
        5
  •  1
  •   Gyuri    15 年前

    显然你在找WebDAV客户端库。

    不知道gazillion的点击率是如何上升的,下面2个看起来很相关:

        6
  •  0
  •   dcrosta    15 年前

    我对这些库都没有经验,但是python包索引(“pypi”)。 lists quite a few webdav modules .

        7
  •  0
  •   designerror    10 年前

    安装:

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

    链接: