存档意外结束

1 投票
1 回答
1263 浏览
提问于 2025-04-16 09:20

大家好,我刚开始学习编程,遇到了一个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在这些标志上添加了一些额外的内容。)

撰写回答