Python编写简单的下载工具

  今天捣鼓了以下Python的urllib模块,闲着无事,下个命令行下的下载器程序。

  通过调用模块的urlretrieve方法获取远程文件,并且用自定义函数来处理下载过程中的显示问题。

  

#! /usr/bin/env python
# -*- coding: utf-8 -*-
#filename: download.py
import urllib
import sys

def download(url, filename):
    def reporthook(block_count, block_size, file_size):
        # 无法获得远程文件大小
        if file_size == -1:
            print "已下载", block_count*block_size, 'Byte'
        # 实时显示现在进度
        else:
            percentage = int((block_count*block_size*100) / file_size)
            if percentage > 100:
                print '100%'
            else:
                print '下载进度%d%%' % (percentage)

    filehandler, m = \
                urllib.urlretrieve(url, filename, reporthook=reporthook)
    print '下载完成'

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print '使用方法: %s url filename' % sys.argv[0]
    else:
        download(sys.argv[1], sys.argv[2])

  因为有些时候,无法得到下载文件的大小,此时显示已经下载的内容部分的大小!

  使用的时候需要提供远程文件路径,本地保存文件名。其实很没有实际意义!只是写着好玩而已!

  我来下载首歌曲试一下,终端下输入
  python download.py http://www.qingtengshop.cn/bag/gequ.mp3 ‘Free Loop.mp3′

  下载进度1%
  下载进度2%
  省略““
  下载进度98%
  下载进度99%
  下载进度100%
  下载完成

  呵呵,无趣吧!




Related posts

此条目发表在 Python 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

Python编写简单的下载工具》有 16 条评论

  1. 喵喵呜 说:

    不管懂不懂,抢沙发先!

  2. 阿正 说:

    那我只能抢板凳了

  3. 泡面 说:

    偶把自己塞进KADA的大脑,然后就能看懂这些是啥东东了~

  4. evlos 说:

    呵呵,脚本总运行时间没有限制吧?
    那真是比PHP好了很多,小邪最近在上下传与进度显示方面 ~
    有点儿苦恼 ~

  5. 有些好的工具很重要

  6. 阿吴 说:

    我喜欢的可爱的python啊,哈哈

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>