我需要将一段Python 2的代码翻译成Python 3,但我不理解print >>
是什么意思,以及在Python 3中应该如何编写它。
print >> sys.stderr, '--'
print >> sys.stderr, 'entrada1: ', entrada1
print >> sys.stderr, 'entrada2: ', entrada2
print >> sys.stderr, '--'
我需要将一段Python 2的代码翻译成Python 3,但我不理解print >>
是什么意思,以及在Python 3中应该如何编写它。
print >> sys.stderr, '--'
print >> sys.stderr, 'entrada1: ', entrada1
print >> sys.stderr, 'entrada2: ', entrada2
print >> sys.stderr, '--'
>> sys.stderr
部分是 Python 2 中将 print
语句输出到 stderr 而不是 stdout 的方法。
引用 文档:
在Python 3中,使用
>>
后面的第一个表达式必须评估为“类文件”对象,具体来说,就是具有如上所述的write()
方法的对象。使用这种扩展形式,随后的表达式将被打印到此文件对象中。如果第一个表达式评估为None
,则使用sys.stdout
作为输出文件。
file
参数来调用print()
函数: print("spam", file=sys.stderr)
将这些从Python 2转换为Python 3,需要更改:
print >>sys.stderr, 'Hello'
致:
print('Hello', file=sys.stderr)
打印到 stderr
注意事项
sys.stderr.write()
print
不同;例如:import sys
errlog = sys.stderr.write
errlog("an error message\n")
.write()
函数需要一个字符串作为参数。如果要写入的内容不是字符串类型,就需要先将其转换为字符串:sys.stderr.write(str(['the answer', 42]))
。 - Eugene Yarmash