python - 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()
但这没有帮助。有任何想法吗?
解决方案
这是因为文件大小非常大尝试将其下载到块中。如示例所示,它将起作用..
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)
推荐阅读
- lua - 在 roblox lua 中遇到 Region3 的问题
- excel - Excel 中的 OLEObjects(命令按钮、选项按钮等)正在消失
- php - 使用 mo 文件在 WordPress 主题中翻译包括超链接的文本的问题
- arrays - 在 Google 表格中,是否有 MATCH 或 INDEX 公式可以显示多个匹配的单元格?[提供示例]
- c - 错误:找不到 ELF 基地!- 返回到 libc
- vulkan - VkSubpassdependencies 是否仅对渲染通道中的子通道有用?
- excel - 如何使用服务帐户从外部数据源刷新 Excel 电源查询
- loops - Stata Loop 对三个单独的 dta 文件执行一系列操作
- reactjs - Redux 工具包和 createAsyncThunk 不适用于 axios 实例
- r - 如何在 r 的列表中找到最大值的 ijk 索引?