Python 2.7文档和Python 3文档中包含有关os.linesep函数的以下行:Python 2.7 documentation(还有Python 3 documentation)。该行指出不要在文本模式下使用os.linesep作为行终止符(默认情况下)。为什么会这样?与在二进制模式下使用它有何不同?
以文本模式打开文件时,任何写入文件的 \n
都会被转换为适合所使用平台的相应行结束符。
例如,如果您在 Windows 上,其中 os.linesep
为 '\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'
\n
都会根据你的操作系统转换为os.linesep
。当文件被读取时,所有基于你的操作系统的os.linesep
都会被转换为\n
。 - Adam Smith