如何阻止Python中的文件输出添加回车符?

4 投票
2 回答
1832 浏览
提问于 2025-04-16 23:50

我正在尝试解析一个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 个回答

1

你现在是以文本模式打开文件,但其实你需要的是二进制模式。想了解更多关于open()函数的信息,可以查看这里: http://docs.python.org/library/functions.html

8

你可能在打开文件时使用的是文本模式(这是默认设置),但其实你想要的是以二进制模式打开。

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

根据文档的说明:

默认情况下,使用的是文本模式,这种模式在写入时可能会把'\n'字符转换成特定平台的表示方式,而在读取时又会把它转换回来。因此,当你要打开一个二进制文件时,应该在模式值后面加上'b',这样可以以二进制模式打开文件,这样做会更方便在不同平台之间使用。

撰写回答