Python: почему urllib.request.urlopen.read () никогда не заканчивает загрузку? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть код:

from urllib.request import urlopen
url = 'http://gmsh.info/bin/MacOSX/gmsh-4.5.2-MacOSX-sdk.tgz'
sdk = urlopen(url).read()

и вопрос: почему эта загрузка никогда не заканчивается? Ссылка в порядке, и она работает в браузерах. Я попытался установить некоторые заголовки, как это:

from urllib import request
req = request.Request(url)
req.add_header('user-agent', "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11")
sdk = request.urlopen(req).read()

, но это не помогло. Есть идеи?

1 Ответ

1 голос
/ 18 февраля 2020

это потому, что размер файла очень большой, попробуйте загрузить его в виде фрагментов .. как показано в примере, он будет работать .. import urllib.request filedata = urllib.request.urlopen('<a href="http://gmsh.info/bin/MacOSX/gmsh-4.5.2-MacOSX-sdk.tgz" rel="nofollow noreferrer">http://gmsh.info/bin/MacOSX/gmsh-4.5.2-MacOSX-sdk.tgz</a>') CHUNK = 1 * 1024 with open('test.zip', 'wb') as f: while True: chunk = filedata.read(CHUNK) if not chunk: break f.write(chunk)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...