存档意外结束

时间:2011-01-03 06:24:35

标签: python zip urllib

嘿那里,我对编程很新,我遇到了Python Challenge的问题;我已经删除了确切的网址,希望避免任何沉重的剧透。

无论如何,我的问题是我在运行以下代码后尝试在WinRAR中打开我创建的文件,它告诉我文件有“意外的归档结束”。我自然会尝试重新运行我的代码几次以防万一,但仍然没有运气。

我还使用我的浏览器从同一个网址抓取文件,以确保文件本身没有损坏,并打开它没有任何错误,所以我很难过。我想我错过了这个过程的一些基本要素?

我提前感谢您的帮助!

import urllib

url = "http://www.pythonchallenge.com/pc/def/xxxxxxx.zip"
site = urllib.urlopen(url)

newfile = open(url.split('/')[-1],'w')    

newfile.write(site.read())

site.close()
newfile.close()

1 个答案:

答案 0 :(得分:3)

我猜你是在Windows机器上。 (主要是由于“WinRAR”)

newfile = open(url.split('/')[-1],'w')

'w'打开要写入的文件,但是在“文本”模式下。在文本模式下,某些操作系统(如Windows)将'\n'转换为其他内容(在Window的情况下为'\r\n'。)。要避免此转换,请以二进制模式'b'打开文件,并写入'w''wb'

这些字母来自fopenSee the manual page for fopen,因为我觉得它比Python docs有更好的标志描述。 (但请注意,Python会在标志中添加一些内容。)