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

Ale*_*Mao 4 python file-io

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

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

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

有没有办法将这个数据块写入新的BMP而不"\r"自动添加?在将其写入新文件之前,我已尝试应用.strip().replace('\r','')字符串.

小智 8

当您要将文件作为二进制文件打开时,您可能正在以文本(默认值)打开文件.

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

文档:

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