2015-12-20 6 views
19

私は、Python 3へのpython 2からコードを変換する必要があると私はprint >>は、どのように私は3「print >>」はPythonで何をしますか?

print >> sys.stderr, '--' 
print >> sys.stderr, 'entrada1: ', entrada1 
print >> sys.stderr, 'entrada2: ', entrada2 
print >> sys.stderr, '--' 
+0

あなたが話しているコードを共有できますか? – Mureinik

+0

それは本当に長いですが、それはそれの一部です –

+1

2to3でこれをフィードできませんでしたか? – user2357112

答えて

21

pythonでそれを書くべきでないん>> sys.stderr部分がへprint文の出力を作るのか理解できませんstderrの代わりにPythonの2の標準出力

documentationを引用する:

printもの第二の部分によって画定される拡張形式を有しますの構文を使用します。この形式では、「print chevron」と呼ばれることがあります。この形式では、>>の後の最初の式は、「ファイルライク」オブジェクト、具体的には上記のように write()メソッドを持つオブジェクトに評価する必要があります。 この拡張形式では、後の式 がこのファイルオブジェクトに出力されます。最初の の式がNoneと評価された場合は、 出力のファイルとしてsys.stdoutが使用されます。 Pythonの3用途において

print()関数にfile引数:

print("spam", file=sys.stderr) 
7

パイソン2からのPython 3、変化にこれらを変換する:

print >>sys.stderr, 'Hello' 

に:

print('Hello', file=sys.stderr) 
2

p stderrノート

sys.stderr.write() 

にrintingは、バージョン間で移植され、まだあなたがprintとは異なり、改行を追加する必要があります。たとえば

import sys 

errlog = sys.stderr.write 
errlog("an error message\n") 
+1

また、['.write()'](https://docs.python.org/2/library/stdtypes.html#file.write)は引数が文字列であると想定しています。文字列以外のものを書くには、最初に文字列に変換する必要があります: 'sys.stderr.write(str(['the answer'、42]))' –

関連する問題