如何停止在Python中将回车添加到我的文件输出中?

时间:2011-08-17 23:21:04

标签: python file-io

我正在尝试解析BMP文件,进行一些更改,然后使用Python重新组装新的BMP。

回车似乎是个大问题。当我使用Notepad ++打开位图文件并搜索"\r'时,该字符不存在。我用Python读取文件(readData = fileIn.read())并尝试使用readData.find('\r')进行搜索,它返回-1。搜索"\n"工作正常。一切都很好。

当我尝试使用fileOut.write(readData)将这个完全相同的文本块写入新的BMP并使用Notepad ++搜索"\r"时,我能够找到它(两次,每次对应于预先存在的"\n"个字符。)

有没有办法将此数据块写入新的BMP而不自动添加"\r"?我已尝试将.strip().replace('\r','')应用于字符串,然后再将其写入新文件。

2 个答案:

答案 0 :(得分:8)

如果要将文件打开为二进制文件,则可能以文本(默认值)打开文件。

open("example.bmp", "rb") # to [r]ead as [b]inary
open("example.bmp", "wb") # to [w]rite as [b]inary

来自the documentation

  

默认设置是使用文本模式,可以在写入时将'\n'个字符转换为特定于平台的表示,然后在读取时返回。因此,在打开二进制文件时,您应该将'b'附加到模式值以在二进制模式下打开文件,这将提高可移植性。

答案 1 :(得分:1)

您正在以文本模式打开文件,而您需要二进制模式。在此处查找有关open()的更多信息: http://docs.python.org/library/functions.html