二
06
今天捣鼓了以下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])
# -*- 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
Address: http://blog.okkey.net/1066.html,转载请注明出处。

不管懂不懂,抢沙发先!
[回复]
Kada 回复:
二月 6th, 2010 at 10:03 下午
喵喵最好了!
[回复]
那我只能抢板凳了
[回复]
Kada 回复:
二月 6th, 2010 at 10:04 下午
多来坐坐。
[回复]
喵喵呜 回复:
二月 6th, 2010 at 10:05 下午
哈哈,阿正,你今天板凳坐真多!
[回复]
偶把自己塞进KADA的大脑,然后就能看懂这些是啥东东了~
[回复]
Kada 回复:
二月 6th, 2010 at 10:31 下午
阿。。。好险。。。
[回复]
呵呵,脚本总运行时间没有限制吧?
那真是比PHP好了很多,小邪最近在上下传与进度显示方面 ~
有点儿苦恼 ~
[回复]
Kada 回复:
二月 7th, 2010 at 10:32 上午
可以选择设置超时时间的。
[回复]
有些好的工具很重要
[回复]
看看loker
[回复]
漠岚 回复:
二月 7th, 2010 at 1:44 上午
声明 看错了….原来是柯达
[回复]
Kada 回复:
二月 7th, 2010 at 10:33 上午
你小心菊花不保!
[回复]
我喜欢的可爱的python啊,哈哈
[回复]
Kada 回复:
二月 7th, 2010 at 10:33 上午
是很可爱。呵呵。
[回复]
来学习一下!
[回复]