【问题标题】:What newline to use when writing to stdout on windows在 Windows 上写入标准输出时使用什么换行符
【发布时间】: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


【解决方案1】:

您可以在 Windows 上毫无问题地使用 \n\r\n。但是,如果您正在写入 stderr 和 stdout,则最佳做法是匹配换行符的操作系统定义,因此最好使用 \r\n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2013-05-02
    • 2015-10-02
    • 2012-01-25
    • 2016-01-06
    • 2013-11-06
    • 2012-06-08
    相关资源
    最近更新 更多