如何在 Python 中打印到 stderr?

新手上路,请多包涵

有几种方法可以写入 stderr:

 print >> sys.stderr, "spam"  # Python 2 only.

sys.stderr.write("spam\n")

os.write(2, b"spam\n")

from __future__ import print_function
print("spam", file=sys.stderr)

这些方法有什么区别?应该首选哪种方法?

原文由 wim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 481
2 个回答

我发现这是唯一一个简短、灵活、可移植和可读的:

 import sys

def eprint(*args, **kwargs):
    print(*args, file=sys.stderr, **kwargs)

可选函数 eprint 节省了一些重复。它可以像标准的一样使用 print 函数:

 >>> print("Test")
Test
>>> eprint("Test")
Test
>>> eprint("foo", "bar", "baz", sep="---")
foo---bar---baz

原文由 MarcH 发布,翻译遵循 CC BY-SA 4.0 许可协议

import sys
sys.stderr.write()

是我的选择,只是更具可读性,并准确说明您打算做什么,并且可以跨版本移植。

编辑:关于可读性和性能,我的第三个想法是“pythonic”……考虑到这两点,使用 python 80% 的代码将是 pythonic。列表理解是不经常使用的“大事”(可读性)。

原文由 Mike Ramirez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题