bitshift对sys.stderr做了什么?

时间:2014-07-24 09:03:25

标签: python

在代码段中,我发现:

import sys

print >> sys.stderr, "hello"

有人可以解释它是如何运作的。 我不知道如何从语句中理解类文件对象的bitshift?

由于

2 个答案:

答案 0 :(得分:1)

Python Docs

中记录了这一点
  

这种形式有时被称为“印花雪佛龙”。在这种形式中,   >>之后的第一个表达式必须评估为“类文件”   object,特别是具有所述write()方法的对象   以上。使用此扩展表单,将打印后续表达式   到这个文件对象。如果第一个表达式的计算结果为None,那么   sys.stdout用作输出文件。

基本上,打印声明的形式(逐字记录)

print_stmt ::=  "print" ([expression ("," expression)* [","]]
                | ">>" expression [("," expression)+ [","]])

答案 1 :(得分:0)

默认情况下,print语句会写入sys.stdout。如果您希望print打印到另一个文件,则必须使用"重定向"语法使用>>