Welcome Anonymous
What would you like to do?
Pasted by rudsonalves
Description função para download de arquivos da rede
On Monday 08 Feb 08:57
Language Python
Url http://paste.ideaslabs.com/show/XDbYw5Fh8k
Download Here
- import os
- import sys
- import urllib
- import time
- # Characters
- ESC=chr(27)
- # download a file
- def download(url, style = 'quiet'):
- try:
- wget = urllib.urlopen(url)
- except IOError:
- raise IOError, '%s not found...' % url
- ESC = chr(27)
- # error mensage and error status. error_msg is 0 to download ok
- error_msg = ''
- status = 0
- size = wget.info()['Content-Length']
- if size.isdigit():
- size = int(size)
- else:
- size = 0
- fout = file(os.path.basename(url), 'w')
- total = 0
- start_time = time.time()
- frist = True
- try:
- for line in wget:
- total += len(line)
- fout.write(line)
- if style == 'bar':
- curr_time = time.time()
- if size != 0:
- per = (100*total)/size
- speed = float(total)/(curr_time - start_time)
- remain = (size - total)/speed
- else:
- per = 100
- speed = 0
- remain = 0
- bar = '#'*int(per*.60) + '>' + ' '*60
- str_out = '[' + bar[:60] + '] %s ' % human_bytes(total)
- if not frist:
- sys.stdout.write(ESC + '[2A')
- else:
- print 'Download: %s Size: %s ' % (os.path.basename(url), \
- human_bytes(size))
- frist = False
- print 'Speed: %s/s Remain: %s ' % (human_bytes(int(speed)), \
- human_time(int(remain)))
- print str_out
- elif style == 'quiet':
- pass
- else:
- print 'Donwload %s of %s' % (human_bytes(total), human_bytes(size))
- except Exception, error_msg:
- # status is 1 for any error. error_msg return de python error message
- status = 1
- if size != 0 and size != total:
- status = 1
- error_msg = 'The downloaded size of the file does not match the source'
- fout.close()
- return status, error_msg
