【发布时间】:2009-12-30 12:24:55
【问题描述】:
我正在使用 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 内容配置:内容配置:附件; filename="TrunkBackup_20101230.zip" 日期:格林威治标准时间 2009 年 12 月 30 日星期三 12:22:08 接受范围:字节
当我检查响应的长度时,它在 9891 处是正确的。我怀疑发生的事情是,当我调用 response.read() 时,结果是一个字符串,回车符“有帮助”归一化(例如,\r 到 @ 987654324@)。写文件时,二进制数据略有错误,zip文件损坏。
我的问题是 (A) 我不确定我是否正确,以及 (B) 如果我是正确的,我如何保存二进制数据本身?
【问题讨论】:
-
以二进制模式打开文件是否有效(
open(filename, 'wb'))?