【发布时间】:2021-02-21 11:05:09
【问题描述】:
如果我用
制作一个 Python 脚本import sys
sys.stdout('a\nb\nc')
然后运行它,我得到了
$ python check_stdout.py
a
b
c
如果我把它改成
import sys
sys.stdout('a\r\nb\r\nc')
那我还是得到
```console
$ python check_stdout.py
a
b
c
那么在 Windows 上写入 stdout 或 stderr 时可以使用\n 作为行分隔符吗?
【问题讨论】:
-
当您输出到控制台时,这并不重要,因为 Windows 控制台将 \n 解释为换行符。当您以“非二进制”模式输出到文件时,如果您使用 python3 \n 将被转换为环境特定的换行符。
-
好的。因此,如果我正在制作一个 Python 命令行工具并想要输出一条跨越多行的消息,我可以编写例如
sys.stderr('a\nb\nc')所以它可以跨平台工作? -
如果您使用 python 3,stdout 和 stderr 以文本模式打开(我找不到文档中的说明,但它们很可能以文本模式打开)并且解释器将处理换行符转化。
-
是的,Python3.6+。太棒了,谢谢!
-
需要考虑的事情——你会一直在 Windows 上还是这个脚本会在 linux 上运行?
标签: python windows newline stdout stderr