/ Безшумен изтеглите файл - python, изтегляне, urllib2

Незавършеният файл за изтегляне - python, изтегляне, urllib2

Този скрипт изтегля файл от уебсайт, а в големи файлове има проблем, защото загубените пакети причиняват спиране на изтеглянето ... Ето кода:

def download(self):

adres = r"http://example.com/100_MbFile.zip"
local = adres.split("/")[-1].split("#")[0].split("?")[0]

try:
print "Przygotowanie do zapisania pliku " + local
u = urllib2.urlopen(adres)
f = open(local, "wb")
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print("Downloading: {0} Bytes: {1}".format(adres, file_size))

file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break

file_size_dl += len(buffer)
f.write(buffer)
p = float(file_size_dl) / file_size
status = r"{0}  [{1:.2%}]".format(file_size_dl, p)
status = status + chr(8)*(len(status)+1)
sys.stdout.write(status)


if file_size_dl == file_size:
f.close()

Имате ли идеи как да изтегляте големи файлове?

Отговори:

0 за отговор № 1

за изтегляне и записване на файлове в Python 2, имате няколко опции ...

бихте могли да използвате urllib: http://docs.python.org/2/library/urllib.html#urllib.urlretrieve

това по същество прави това, което сте опитвали:

import urllib

filename = "100_MbFile.zip"
url = "http://example.com/" + filename

urllib.urlretrieve(url, filename)

... или бихте могли да използвате urllib2, и да определите размера на парче, който да четете (например в примерния си код).

import urllib2

filename = "100_MbFile.zip"
url = "http://example.com/" + filename

req = urllib2.urlopen(url)
block_sz = 8192
with open(filename, "wb") as f:
while True:
chunk = req.read(block_sz)
if not chunk:
break
f.write(chunk)