Python 为什么你不应该';在文本模式下编辑时是否不使用os.linesep?

Python 为什么你不应该';在文本模式下编辑时是否不使用os.linesep?,python,Python,(以及)包含关于os.linepath函数的以下行: 写入打开的文件时,不要将os.linesep用作行终止符 在文本模式下(默认设置) 为什么呢?它与在二进制模式下使用它有何不同?当您在文本模式下打开一个文件时,您写入该文件的任何\n都会转换为您所使用的平台的相应行尾 因此,例如,如果您在Windows上,os.linesep是'\r\n',当您将其写入文件时,\n将自动转换为\r\n,最终将\r\n写入您的文件 例如: >>> import os >>>

(以及)包含关于
os.linepath
函数的以下行:

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


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

当您在文本模式下打开一个文件时,您写入该文件的任何
\n
都会转换为您所使用的平台的相应行尾

因此,例如,如果您在Windows上,
os.linesep
'\r\n'
,当您将其写入文件时,
\n
将自动转换为
\r\n
,最终将
\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
@AdamSmith:如果它是“不必要的实现细节”,为什么要提及它?如果您需要提及它,因为人们做了错误的事情,这造成了太多的混乱,那么您最好解释一下实现细节,以及为什么不应该使用它。。。