我正在使用python以编程方式从Web服务器下载zip文件。使用网络浏览器,没关系。我写过这个(部分)脚本;
response = urllib2.urlopen(url, data, 10)
the_page = response.read()
f = open(filename, 'w')
f.write(the_page)
f.close()
请求成功,我获取数据。问题是我正在下载的文件 - 一个zip文件 - 不起作用;该文件似乎已损坏。它似乎是正确的长度,并在文本编辑器中看起来看起来像一个zip文件的内容。以下是下载的标题;
内容长度:9891 内容 - 处置:内容 - 处置:附件;文件名= “TrunkBackup_20101230.zip” 日期:2009年12月30日星期三格林威治标准时间12:22:08 Accept-Ranges:bytes
当我检查响应的长度时,它在9891是正确的。我怀疑发生了什么,当我调用response.read()
时,结果是一个字符串,其中回车符'有帮'地归一化(例如,{{1到\r
)。当我写文件时,二进制数据有点错误,并且zip文件已损坏。
我的问题是(A)我不确定我是否正确,(B)如果我是对的,如何保存二进制数据本身?
答案 0 :(得分:9)
尝试以二进制模式打开文件:
f = open(filename, 'wb')
答案 1 :(得分:1)
您可以使用urlretrieve function下载原始二进制文件。
答案 2 :(得分:0)
如果有人在写入模式设置为“wb”时遇到同样的错误,请确保在尝试使用该文件之前调用“f.flush()”或“f.close()”,否则可能没有写完。