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
hellorocky728
V2EX  ›  Python

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

  •  
  •   hellorocky728 · 2016-11-28 11:26:45 +08:00 · 3635 次点击
    这是一个创建于 2917 天前的主题,其中的信息可能已经有所发展或是发生改变。
    16 条回复    2016-11-30 00:34:03 +08:00
    xiaoshaozi
        1
    xiaoshaozi  
       2016-11-28 14:08:54 +08:00
    赞!支持一下飞群
    hellorocky728
        2
    hellorocky728  
    OP
       2016-11-28 14:43:04 +08:00
    @xiaoshaozi O(∩_∩)O 谢谢,你是哪位啊,居然报我名字....囧
    Yinz
        3
    Yinz  
       2016-11-28 18:07:07 +08:00   ❤️ 1
    看到 TODO 里有 Progress bar ,推荐下个人的库;D
    可以实时显示多行进度条,很适合多线程状态展示:D
    https://github.com/Yinzo/reprint
    haddy
        4
    haddy  
       2016-11-28 18:39:13 +08:00
    看到了“/tmp ”,是 Linux 限定?
    第 45 行是不是有 typo ? printf 应该是 print 吧?
    shebang 改成"/usr/bin/env python3"会不会好一点,因为我看这个应该是 3.x 的语法。
    还有清除临时文件那里,我觉得维护个临时文件的列表比较好,要是有别的程序也用了那个目录就麻烦了……
    hellorocky728
        5
    hellorocky728  
    OP
       2016-11-28 20:02:32 +08:00
    @haddy 谢谢建议,对于 /tmp 目录,是同时支持 Linux 和 MacOS 的,不支持 win,shebang 确实应该改成 python3,临时目录因为我的 mac 硬盘比较小,所以就清除了临时文件,使用 /tmp 目录也是这个目的
    hellorocky728
        6
    hellorocky728  
    OP
       2016-11-28 20:06:08 +08:00
    @Yinz 谢谢,今晚回家搞~
    264768502
        7
    264768502  
       2016-11-28 21:19:48 +08:00 via Android   ❤️ 1
    几个建议:
    多线程的 ctrl+c 的捕获
    Win 的支持,不要写死 /tmp,看看 tempfile 这个库
    更用户友好的 print
    download 的超时重试之类的
    其实可以考虑完全不用外部的依赖,用 urllib/argparse 之类的,减少使用的人的负担
    hellorocky728
        8
    hellorocky728  
    OP
       2016-11-28 23:07:27 +08:00
    @264768502 感谢
    Shineme
        9
    Shineme  
       2016-11-29 09:11:19 +08:00
    如果下载的文件名重复了怎么办 还有会记录每个文件对应的下载源地址吗
    hellorocky728
        10
    hellorocky728  
    OP
       2016-11-29 10:32:28 +08:00
    @Shineme 发现重复的时候会在新下载的文件后面加上.new 后缀,不是很理解第二个问题,下载地址是必传参数,记录每个文件对应的下载源地址是什么意思?
    Shineme
        11
    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
        12
    TaMud  
       2016-11-29 15:52:41 +08:00
    axel 对 https 支持的不好,不要过于浪费时间了,练练手就行了
    TaMud
        13
    TaMud  
       2016-11-29 15:53:04 +08:00
    pycurl ,可以考虑考虑
    hellorocky728
        14
    hellorocky728  
    OP
       2016-11-29 22:28:30 +08:00
    @TaMud 嗯嗯,就是为了练练手,拆拆轮子,造造轮子
    hellorocky728
        15
    hellorocky728  
    OP
       2016-11-29 22:30:43 +08:00
    @Shineme 这个...只能用 MD5 来校验了,不过程序员估计也不会遇到这种情况吧...
    lslqtz
        16
    lslqtz  
       2016-11-30 00:34:03 +08:00
    @hellorocky728 为什么不是跟.数字,如果已经有.new 了怎么办。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1071 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.