为什么在文本模式下编辑时不应该使用 os.linesep?


Python

2.7 文档(以及 Python 3 文档)包含以下有关os.linepath函数的行:

写入打开的文件时不要使用 os.linesep 作为行终止符 在文本模式下(默认);

为什么?它与在二进制模式下使用它有何不同?

在文本模式下打开文件时,写入文件的任何n都将转换为所用平台的相应行尾。

因此,例如,如果您在os.linesep 'rn'的Windows上,当您将其写入文件时,n将自动转换为rn,并且您最终会将rrn写入您的文件。

例如:

>>> import os
>>> os.linesep
'rn'
>>> with open('test.txt', 'w') as f:
...     f.write(os.linesep)
...
>>> with open('test.txt', 'rb') as f:
...     print repr(f.read())
...
'rrn'

相关内容

最新更新