2010-06-20 43 views
12

我已經看到了使用「打印」與「>>」寫東西到一個文件的人:右移運算符如何在python打印語句中工作?

In [7]: with open('text', 'w') as f: 
    ...:  print >> f, "Hello, world!" 
    ...: 

In [8]: !type text 
Hello, world! 

它是如何工作的?什麼時候應該使用這個而不是僅僅使用「write」方法?

回答

12

https://docs.python.org/2/reference/simple_stmts.html#the-print-statement

打印也具有延長的形式, 通過上述 語法的第二部分限定。此格式爲 有時稱爲「print chevron」。在此形式中,>>之後的第一個 表達式必須將 評估爲「類文件」對象,特別是 ,該對象的write()方法與上述的 。有了這個擴展的 表格,後續的表達式就是 打印到這個文件對象。如果 的第一個表達式計算結果爲None,則 ,則sys.stdout用作輸出的文件 。

+5

也許值得注意的是,這個擴展形式在Python 3中不再存在,所以新的代碼應該可能避免它。 – 2010-06-20 10:36:43

+4

這實際上並不是這種情況下的'>>'操作符;解析器專門處理它作爲'print'語法的一部分。 – abarnert 2015-05-10 07:57:37