首页 > 解决方案 > Python:为什么 urllib.request.urlopen.read() 永远不会完成下载?

问题描述

我有代码:

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()

但这没有帮助。有任何想法吗?

标签: pythonrequest

解决方案


这是因为文件大小非常大尝试将其下载到块中。如示例所示,它将起作用.. import urllib.request filedata = urllib.request.urlopen('http://gmsh.info/bin/MacOSX/gmsh-4.5.2-MacOSX-sdk.tgz') CHUNK = 1 * 1024 with open('test.zip', 'wb') as f: while True: chunk = filedata.read(CHUNK) if not chunk: break f.write(chunk)


推荐阅读