为什么在文本模式下编辑时不应该使用os.linesep?
问题内容:
Python
2.7文档
(以及Python
3文档
)包含有关该os.linepath
函数的以下行:
写入以文本模式打开的文件时,请不要使用os.linesep作为行终止符(默认);
这是为什么?与在二进制模式下使用它有何不同?
问题答案:
当您以文本模式打开文件时\n
,您写入该文件的任何内容都会转换为所使用平台的相应行结尾。
因此,例如,如果您在Windows上的os.linesep
is是'\r\n'
,当您将其写入文件时,\n
它将被自动转换为,\r\n
并且最终将被\r\r\n
写入文件。
例如:
>>> import os
>>> os.linesep
'\r\n'
>>> with open('test.txt', 'w') as f:
... f.write(os.linesep)
...
>>> with open('test.txt', 'rb') as f:
... print repr(f.read())
...
'\r\r\n'