V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
angel725
V2EX  ›  问与答

Python 有什么处理大量文件下载的方法

  •  
  •   angel725 · Sep 12, 2018 · 3127 views
    This topic created in 2793 days ago, the information mentioned may be changed or developed.
    有几百个 文件。但都不大,最大的也就几兆

    我用 pycurl 下载。

    我把下载地址放到 列表 里了。

    取出第一个下载,等下完了,在取第二个。

    但问题是,几百个下载连接,pycurl 怎么判断当前文件下载完了,然后开始下一个。
    10 replies    2018-09-12 11:25:48 +08:00
    imn1
        1
    imn1  
       Sep 12, 2018
    还不如扔 idm/wget/aria2 ……
    billlee
        2
    billlee  
       Sep 12, 2018
    如果只要一个个下载,你调 curl.perform 阻塞在那里就好了啊
    WO31400
        3
    WO31400  
       Sep 12, 2018
    为什么不直接 requests.get
    Qzier
        4
    Qzier  
       Sep 12, 2018 via iPad
    用 aiohttp+aiofiles 异步下载
    gefranks
        5
    gefranks  
       Sep 12, 2018
    我前段时候是用 requests 来下的.3 万 3 千多个几十到几百兆的文件.
    取 content-length 然后跟下下来的文件做比较.
    其实文件仍然有下坏掉的可能,所以我对重要的文件是下 2 遍,然后再去做字节的比较,我觉得下 2 次都下坏掉的几率不是非常大.
    当时也碰到会有断流停住的问题
    xmoiduts
        6
    xmoiduts  
       Sep 12, 2018 via Android
    concurrent.futures 的 map()?
    (好像现在流行 aio 什么了……看来我的方案老了,不过我东西不多这么搞也没问题过)
    noqwerty
        7
    noqwerty  
       Sep 12, 2018 via Android
    以前处理过跟你类似的问题,当时抱着学习的心写了 200 多行的 aiohttp+aiofiles,现在就只用 Python 生成链接然后全丢到 aria2 ……
    delectate
        8
    delectate  
       Sep 12, 2018
    交给 aria2,剩下的该干嘛干嘛去。
    congeec
        9
    congeec  
       Sep 12, 2018 via iPhone
    shell 脚本绝对不超过 3 行
    angel725
        10
    angel725  
    OP
       Sep 12, 2018
    重点是怎么判断 pycurl 下载完了一个文件
    若没下完,怎么让程序等待它下完。用 time.sleep 整个程序都会暂停。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   810 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 22:13 · PVG 06:13 · LAX 15:13 · JFK 18:13
    ♥ Do have faith in what you're doing.