2010-12-22 122 views

回答

5

「抽象出它是什麼類型」 Python中自動完成 - 這是稱爲「鴨子打字」。只需將任何類似文件的對象傳遞給函數,並使用類似文件的對象的接口。

FWIW,在sys模塊中,標準輸入/輸出/誤差流由stdin,stdoutstderr表示。要獲取讀取和寫入字符串的文件類對象,請使用StringIO模塊。

1

你只需要一個實現文件,管道,流等等方法的對象。舉例來說,我當我想我脫離Python程序中使用這個類有時候,我想重定向sys.stderr/sys.stdout的:

class Log(object): 
    """used for logging for background process""" 
    def __init__(self, f): 
      self.f = f 
    def write(self, s): 
      self.f.write(s) 
      self.f.flush() 
sys.stdout = sys.stderr = Log(open('/tmp/daemonlog', 'a+'))