Answers:
文件模式,写入和二进制。由于您正在编写.jpg文件,因此看起来不错。
但是,如果您应该阅读该jpg文件,则需要使用 'rb'
更多信息
在Windows上,附加到模式的'b'以二进制模式打开文件,因此也有'rb','wb'和'r + b'之类的模式。Windows上的Python区分文本文件和二进制文件。当读取或写入数据时,文本文件中的行尾字符会自动更改。这种对文件数据的幕后修改对于ASCII文本文件而言是很好的选择,但它会破坏JPEG或EXE文件中的二进制数据。
fd.write("foo\n")
实际上是写在磁盘上的foo\r\n
(请注意\r
)。
该wb
指示文件被打开以二进制方式写作。
当以二进制模式写入时,Python在写入文件时不会对数据进行任何更改。但是,在文本模式下(b
如w
或在用或指定文本模式时排除时wt
),Python将基于默认文本编码对文本进行编码。此外,Python会将行尾(\n
)转换为特定于平台的行尾,这会破坏二进制文件(例如exe
或png
文件)。
因此,在编写文本文件时(无论是使用纯文本还是基于文本的格式,如CSV)都应使用文本模式,而在编写非文本文件(如图像)时,则必须使用二进制模式。
参考文献:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
选项打开的文本文件(CSV格式,最终并没有那么重要)时出现错误。通过使用该w
选项,我能够使其正常工作。
b
模式仅对Windows有效。现在已从文档和二进制模式中删除“应该用于所有不包含文本的文件”。
open
而不是file
。file
已在Python 2中弃用(找不到哪个版本),并已在py3k中删除。(感谢Scott)请参阅此问题以获取更多信息。