如何阻止Python中的文件输出添加回车符?
我正在尝试解析一个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'
,这样可以以二进制模式打开文件,这样做会更方便在不同平台之间使用。