1. ホーム
  2. python

[解決済み] Pythonで標準エラー出力するには?

2022-02-08 10:14:24

質問

標準エラー出力に書き込むには、いくつかの方法があります。

# Note: this first one does not work in Python 3
print >> sys.stderr, "spam"

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

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

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

とは矛盾するようですが Pythonの禅 #13 ということで、ここで何が違うのか、また、どちらかの方法にメリットやデメリットがあるのか?どちらの方法を使うべきでしょうか?

<サブ 1つの-できれば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)

オプションの関数 eprint は、繰り返しを節約することができます。これは、標準の print 関数を使用します。

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