周末造轮子之多线程文件下载----Pyaxel, 你值得拥有

2016-11-28 11:26:45 +08:00
 hellorocky728
https://github.com/hellorocky/LearnByCoding/tree/master/python/crawler/pyaxel
3483 次点击
所在节点    Python
16 条回复
xiaoshaozi
2016-11-28 14:08:54 +08:00
赞!支持一下飞群
hellorocky728
2016-11-28 14:43:04 +08:00
@xiaoshaozi O(∩_∩)O 谢谢,你是哪位啊,居然报我名字....囧
Yinz
2016-11-28 18:07:07 +08:00
看到 TODO 里有 Progress bar ,推荐下个人的库;D
可以实时显示多行进度条,很适合多线程状态展示:D
https://github.com/Yinzo/reprint
haddy
2016-11-28 18:39:13 +08:00
看到了“/tmp ”,是 Linux 限定?
第 45 行是不是有 typo ? printf 应该是 print 吧?
shebang 改成"/usr/bin/env python3"会不会好一点,因为我看这个应该是 3.x 的语法。
还有清除临时文件那里,我觉得维护个临时文件的列表比较好,要是有别的程序也用了那个目录就麻烦了……
hellorocky728
2016-11-28 20:02:32 +08:00
@haddy 谢谢建议,对于 /tmp 目录,是同时支持 Linux 和 MacOS 的,不支持 win,shebang 确实应该改成 python3,临时目录因为我的 mac 硬盘比较小,所以就清除了临时文件,使用 /tmp 目录也是这个目的
hellorocky728
2016-11-28 20:06:08 +08:00
@Yinz 谢谢,今晚回家搞~
264768502
2016-11-28 21:19:48 +08:00
几个建议:
多线程的 ctrl+c 的捕获
Win 的支持,不要写死 /tmp,看看 tempfile 这个库
更用户友好的 print
download 的超时重试之类的
其实可以考虑完全不用外部的依赖,用 urllib/argparse 之类的,减少使用的人的负担
hellorocky728
2016-11-28 23:07:27 +08:00
@264768502 感谢
Shineme
2016-11-29 09:11:19 +08:00
如果下载的文件名重复了怎么办 还有会记录每个文件对应的下载源地址吗
hellorocky728
2016-11-29 10:32:28 +08:00
@Shineme 发现重复的时候会在新下载的文件后面加上.new 后缀,不是很理解第二个问题,下载地址是必传参数,记录每个文件对应的下载源地址是什么意思?
Shineme
2016-11-29 15:18:44 +08:00
比如我的文件是 https://www.v2ex.com/1.zip https://www.baidu.com/1.zip 我是怎么知道 1.zip 到底是 V2EX 的还是百度的,迅雷等下载工具可以查看下载源地址
TaMud
2016-11-29 15:52:41 +08:00
axel 对 https 支持的不好,不要过于浪费时间了,练练手就行了
TaMud
2016-11-29 15:53:04 +08:00
pycurl ,可以考虑考虑
hellorocky728
2016-11-29 22:28:30 +08:00
@TaMud 嗯嗯,就是为了练练手,拆拆轮子,造造轮子
hellorocky728
2016-11-29 22:30:43 +08:00
@Shineme 这个...只能用 MD5 来校验了,不过程序员估计也不会遇到这种情况吧...
lslqtz
2016-11-30 00:34:03 +08:00
@hellorocky728 为什么不是跟.数字,如果已经有.new 了怎么办。。

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

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

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

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

© 2021 V2EX