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

2018-09-12 00:11:14 +08:00
 angel725
有几百个 文件。但都不大,最大的也就几兆

我用 pycurl 下载。

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

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

但问题是,几百个下载连接,pycurl 怎么判断当前文件下载完了,然后开始下一个。
2459 次点击
所在节点    问与答
10 条回复
imn1
2018-09-12 00:26:22 +08:00
还不如扔 idm/wget/aria2 ……
billlee
2018-09-12 00:26:54 +08:00
如果只要一个个下载,你调 curl.perform 阻塞在那里就好了啊
WO31400
2018-09-12 00:54:06 +08:00
为什么不直接 requests.get
Qzier
2018-09-12 01:37:51 +08:00
用 aiohttp+aiofiles 异步下载
gefranks
2018-09-12 01:41:45 +08:00
我前段时候是用 requests 来下的.3 万 3 千多个几十到几百兆的文件.
取 content-length 然后跟下下来的文件做比较.
其实文件仍然有下坏掉的可能,所以我对重要的文件是下 2 遍,然后再去做字节的比较,我觉得下 2 次都下坏掉的几率不是非常大.
当时也碰到会有断流停住的问题
xmoiduts
2018-09-12 04:22:24 +08:00
concurrent.futures 的 map()?
(好像现在流行 aio 什么了……看来我的方案老了,不过我东西不多这么搞也没问题过)
noqwerty
2018-09-12 05:15:46 +08:00
以前处理过跟你类似的问题,当时抱着学习的心写了 200 多行的 aiohttp+aiofiles,现在就只用 Python 生成链接然后全丢到 aria2 ……
delectate
2018-09-12 06:45:30 +08:00
交给 aria2,剩下的该干嘛干嘛去。
congeec
2018-09-12 10:23:46 +08:00
shell 脚本绝对不超过 3 行
angel725
2018-09-12 11:25:48 +08:00
重点是怎么判断 pycurl 下载完了一个文件
若没下完,怎么让程序等待它下完。用 time.sleep 整个程序都会暂停。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX