有谁可以告诉我为什么它只下载1k字节的图像(当我使用urlretrieve()
时同样的问题)?图像的大小比这大得多。
f = open('00000001.gif','wb')
f.write(urllib.urlopen('http://gifs.gifbin.com/082013/tn_1378920172_decapitated_snake_bites_itself.gif').read())
f.close()
答案 0 :(得分:0)
您需要验证您的网络或您尝试检索的网址; Python将从结果套接字中读取,直到达到EOF,因此如果您获得的数据少于预期,则会发送一个不完整的响应,网络会将响应缩短(代理服务器,防火墙,你有什么),或者你的假设关于服务器为该URL发送的内容是错误的。
您还想使用shutil.copyfileobj()
为您进行阅读:
from shutil import copyfileobj
im = urllib.urlopen('http://gifs.gifbin.com/082013/tn_1378920172_decapitated_snake_bites_itself.gif')
with open('00000001.gif', 'wb') as out:
copyfileobj(im, out)
这不仅会处理以块为单位读取数据,还会避免使用大量二进制数据填充内存来启动。 with
语句处理为您关闭文件对象。
答案 1 :(得分:-1)
只需将read()更改为read(-1)。