2013-07-29 100 views
-2

我有一個函數:寫入控制檯或文件蟒蛇

def hello_world(output): 
    output.write("Hello World") 

,並希望這些傳遞給它:

file = io.open("myfile.txt", "w") 
hello_world(file) 
hello_world(sys.stdout) 

我不知道這是否是正確的這樣。我也得到NameError: global name 'sys' is not defined 你會怎麼做我想做的?

回答

2

嘗試添加:

import sys 

到您的文件

1

你應該在你的腳本的開頭加入這一行:

import sys 
1

你忘了import sys

sys是蟒蛇的「特定於系統的參數和功能」模塊 - python docs

這樣做是得到python文件的系統特定標準輸出管道輸出。如在一個流中它可以寫入:)。

文件和sys.stdoutsys.stdinsys.stderr都只是要寫入的流。

一般來說,如果說NameError你要麼忘了進口的東西,或者你沒有正確定義的東西:)

你可能要重寫,作爲opened_file或類似File和類似的一些換句話說一樣,如果你做的random = 3永遠都不好解決,因爲它們被用作各種Python對象或內部的名稱 - 並且你想確保你沒有碰撞,即使Python應該巧妙地解決這些問題:)

1

你需要進口sys模塊:

import sys 

然後你可以使用sys.stdout之後。