Python中的"print >>"是什么意思?

47

我需要将一段Python 2的代码翻译成Python 3,但我不理解print >>是什么意思,以及在Python 3中应该如何编写它。

print >> sys.stderr, '--'
print >> sys.stderr, 'entrada1: ', entrada1
print >> sys.stderr, 'entrada2: ', entrada2
print >> sys.stderr, '--'
3个回答

50

>> sys.stderr 部分是 Python 2 中将 print 语句输出到 stderr 而不是 stdout 的方法。

引用 文档

print 还有一种扩展形式,由上述语法的第二部分定义。这种形式有时被称为“打印 chevron”。在这种形式中,>> 后面的第一个表达式必须评估为“类文件”对象,具体来说,就是具有如上所述的 write() 方法的对象。使用这种扩展形式,随后的表达式将被打印到此文件对象中。如果第一个表达式评估为 None,则使用 sys.stdout 作为输出文件。

在Python 3中,使用file参数来调用print()函数:
 print("spam", file=sys.stderr)

23

将这些从Python 2转换为Python 3,需要更改:

print >>sys.stderr, 'Hello'

致:

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

4

打印到 stderr 注意事项

sys.stderr.write()

跨版本可移植,但需要添加换行符,与print不同;例如:
import sys

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

3
请注意,.write() 函数需要一个字符串作为参数。如果要写入的内容不是字符串类型,就需要先将其转换为字符串:sys.stderr.write(str(['the answer', 42])) - Eugene Yarmash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接