如何在Python中打印到stderr?

2022-09-05 00:51:57

有几种方法可以写入 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)

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


答案 1

我发现这是唯一一个简短,灵活,便携和可读的:

# This line only if you still care about Python2
from __future__ import print_function

import sys

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

可选功能可避免一些重复。它可以以与标准函数相同的方式使用:eprintprint

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

答案 2
import sys
sys.stderr.write()

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

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