我正在尝试解析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
从文档:
默认设置是使用文本模式,该模式可以
'\n'在写入时将字符转换为特定于平台的表示形式,然后在读取时将其转换 因此,在打开二进制文件时,您应该附加'b'模式值以二进制模式打开文件,这将提高可移植性.