Python 在windows上写入标准输出时使用什么换行符
如果我用 导入系统 sys.stdout('a\nb\nc') 然后运行它,我明白了Python 在windows上写入标准输出时使用什么换行符,python,windows,newline,stdout,stderr,Python,Windows,Newline,Stdout,Stderr,如果我用 导入系统 sys.stdout('a\nb\nc') 然后运行它,我明白了 $ python check_stdout.py a b c 如果我把它改成 导入系统 sys.stdout('a\r\nb\r\nc') 那我还是会 ```console $ python check_stdout.py a b c 因此,在Windows上写入stdout或stderr时,可以使用\n作为行分隔符吗?您可以在Windows上毫无问题地使用\n或\r\n。但是,如果您正在向stderr
$ python check_stdout.py
a
b
c
如果我把它改成
导入系统
sys.stdout('a\r\nb\r\nc')
那我还是会
```console
$ python check_stdout.py
a
b
c
因此,在Windows上写入stdout或stderr时,可以使用
\n
作为行分隔符吗?您可以在Windows上毫无问题地使用\n
或\r\n
。但是,如果您正在向stderr和stdout写入数据,那么最佳做法是匹配操作系统对换行符的定义,因此在输出到控制台时最好使用\r\n
,这并不重要,因为windows控制台将\n解释为换行符。当您以“非二进制”模式输出到文件时,如果使用python3\n,将转换为特定于环境的换行符。确定。因此,如果我正在制作一个Python命令行工具,并且想要输出一条跨多行的消息,我可以编写例如sys.stderr('a\nb\nc')
,这样它就可以跨平台工作?如果使用Python 3,stdout和stderr是以文本模式打开的(我找不到文档中说明了这一点,但它们很可能是以文本模式打开的)解释器将处理换行转换。是的,Python3.6+。酷,谢谢!需要考虑的问题是,你会一直在Windows上,或者这个脚本会在Linux上运行吗?