web-dev-qa-db-ja.com

Pythonで「print >>」は何をしますか?

python 2からpython 3にコードを変換する必要があり、print >>どうすればいいですか?python 3。

print >> sys.stderr, '--'
print >> sys.stderr, 'entrada1: ', entrada1
print >> sys.stderr, 'entrada2: ', entrada2
print >> sys.stderr, '--'
28
Sebastian

>> sys.stderr部分は、Python 2.のstdoutではなく、printステートメントをstderrに出力します。

ドキュメント を引用するには:

print も拡張形式を持ち、上記の構文の2番目の部分で定義されます。このフォームは「print chevron」と呼ばれることもあります。このフォームでは、>>の後の最初の式は「ファイルのような」オブジェクト、特にwrite()メソッドを持つオブジェクトに評価される必要があります。上記のように。この拡張形式では、後続の式がこのファイルオブジェクトに出力されます。最初の式がNoneと評価される場合、sys.stdoutが出力用のファイルとして使用されます。

Python 3では、 print() 関数にfile引数を使用します。

 print("spam", file=sys.stderr)
32
Eugene Yarmash

これらをPython 2からPython 3に変更します:

print >>sys.stderr, 'Hello'

に:

print('Hello', file=sys.stderr)
14
Tom Karzes

stderr noteへの印刷用

sys.stderr.write()

バージョン間で移植可能ですが、printとは異なり、改行を追加する必要があります。例えば

import sys

errlog = sys.stderr.write
errlog("an error message\n")
3
elm