存档意外结束
大家好,我刚开始学习编程,遇到了一个Python挑战的问题;为了避免剧透,我把具体的网址去掉了。
我的问题是,我运行了以下代码后,想用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 个回答
3
我猜你是在用Windows电脑。(主要是因为提到了“WinRAR”)
newfile = open(url.split('/')[-1],'w')
这里的 'w'
是用来打开文件进行写入的,但它是以“文本”模式打开的。在文本模式下,有些操作系统(比如Windows)会把 '\n'
转换成其他东西(在Windows上是 '\r\n'
)。为了避免这种转换,应该用二进制模式打开文件,也就是用 'b'
,所以写入时应该用 'wb'
。
这些字母是从 fopen
这个函数来的。你可以查看 fopen
的手册页面,我觉得那里的描述比 Python文档更清楚。(不过要注意,Python在这些标志上添加了一些额外的内容。)