V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
youthfire
V2EX  ›  Python

怎么用 Python 连接坚果云的 Webdav 上的文件?

  •  1
     
  •   youthfire · 2021-03-21 10:12:06 +08:00 · 2306 次点击
    这是一个创建于 1378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的想法是,把一个 sqlite 微型数据库放在坚果云上,利用 Webdav 随时读写.方便两台 Mac 随时接入且偶尔各自写入一些数据(不频繁)

    目前是先用 Finder 连接地址后输入的账号密码,映射了相关盘符。用 Python 接入时 conn = sqlite3.connect(r'https://dav.jianguoyun.com/dav//我的坚果云 /xxx.db') 会提示 sqlite3.OperationalError: unable to open database file

    有什么方法解决吗?还是 Webdav 不能这样用?也是第一次接触。

    第 1 条附言  ·  2021-03-21 11:16:15 +08:00
    自己解决了
    属性里的路径应该看 Where 而不是 Server 地址
    路径换成 /Volumes/dav/我的坚果云后就可以了
    pupboss
        1
    pupboss  
       2021-03-21 10:13:56 +08:00 via iPhone
    你都映射盘符了,用本地绝对路径最容易
    如果想用 python 直接连接,你应该先去找 webdav 协议的文件操作库,再用 sqlite 连接
    youthfire
        2
    youthfire  
    OP
       2021-03-21 10:24:32 +08:00 via iPhone
    @pupboss #1 我看 windows 一般映射都是形成一个本地盘符,然后 Python 直接访问这个盘符下文件,现在看 Mac 连接后它的路径属性就是 http 地址。其实我倒是就是想直接操作这个“绝对地址”。
    zengxs
        3
    zengxs  
       2021-03-21 10:28:20 +08:00
    两个客户端同时写入不会有数据竞争的问题
    Eleutherios
        4
    Eleutherios  
       2021-03-21 10:31:13 +08:00 via iPhone
    google 一下 你就知道
    youthfire
        5
    youthfire  
    OP
       2021-03-21 10:36:50 +08:00 via iPhone
    @zengxs #3 谢谢提醒,写入不频繁,且写入时间极短,基本也没有对同表操作产生,以前都是手工拷贝一份给第二台电脑,但目前各自会产生少量自有数据所以考虑这种方式
    youthfire
        6
    youthfire  
    OP
       2021-03-21 11:01:25 +08:00   ❤️ 1
    @Eleutherios 确实找了,看到的主要是例如 webdavclient3 对地址上的各种 download, makedir, clean, move, update 操作,实际上我并不想对“空间”进行操作,而只是想获取“文件地址”,以保证 Python 可以直接 access 。我不是很清楚 Webdav 是不是可以这样用。
    oott123
        7
    oott123  
       2021-03-21 11:16:53 +08:00 via Android   ❤️ 1
    如果你要直接这么连接,那需要 python 的 sqlite3 库支持连接 webdav,但它显然是不支持的,所以不可行。

    最简单的办法是直接写 macOS 映射后的地址, /Volumes/xxx 这种的,让系统的 webdavfs 帮你管。
    SenLief
        8
    SenLief  
       2021-03-21 11:31:15 +08:00   ❤️ 1
    不建议用坚果云 webdav,这货对于请求限制很严格,如果请求量不大还好。建议还是用 COS
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:50 · PVG 20:50 · LAX 04:50 · JFK 07:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.