def report(count, blockSize, totalSize):
  percent = int(count*blockSize*100/totalSize)
  sys.stdout.write("\r%d%%" % percent + ' complete')
  sys.stdout.write('[%-50s] %s'%( '=' * int(math.floor(count*blockSize*50/totalSize)),percent))
  sys.stdout.flush()
urlretrieve(url,'{}/第{}节.mp4'.format(self.BASE_PATH,i),reporthook=report)

[%-50s]表示50个占位符 炫酷吧!

print('[%-50s]'%('='*25))
/usr/bin/python /home/pipidi/learngit/lianjia/lianjia/spiders/aa.py
[=========================                         ]

Process finished with exit code 0


占位符的神奇用法!

--------------------2/21-------------------------------------------------------------------------------

因为不了解reporthook的用法所以我继续写了一些例子:

def myReportHook(count, blockSize, totalSize):
     print count, blockSize, totalSize



 >>> import urllib
 >>> 
urllib.urlretrieve('http://personalpages.tds.net/~kent37/Python/PythonResources.html', 
reporthook=myReportHook)
0 8192 7955
1 8192 7955
2 8192 7955
 
This result surprised me at first - why is it reading three blocks? But the 
first line is output _before_ any blocks are read (count=0); the second 
line is the actual read, and the third line is the failed read that ends 
the operation. If you look at the code for urllib.urlretrieve(), you see 
that it calls report hook for each attempted read, so it will always get an 
extra call at the end.

大体意思是第一行是开始链接,第二行是下载,第三行是结束