angel725
V2EX  ›  问与答

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

  •  
  •   angel725 · Sep 12, 2018 · 3457 views
    This topic created in 2935 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   ·   Privacy   ·   Solana   ·   842 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 20:45 · PVG 04:45 · LAX 13:45 · JFK 16:45
    ♥ Do have faith in what you're doing.