2013-02-22 65 views
6

我想用Python将输出发送到终端上的文件log.txt和STDOUT。这是我有:Python,如何将输出发送到文件和终端

import sys 
class Logger(object): 
    def __init__(self, filename="Default.log"): 
     self.terminal = sys.stdout 
     self.log = open(filename, "a") 

    def write(self, message): 
     self.terminal.write(message) 
     self.log.write(message) 

sys.stdout = Logger("log.txt") 
print "Hello world !"   #This line is saved in log.txt and STDOUT 

该程序发送输出到文件和标准输出。我的问题是:如何调用文件的写入功能?

回答

3

documentation为sys.stdout的:

输出和错误不需要内置的文件对象:任何对象是可接受的,只要它有一个写()方法,它接受字符串参数。

+0

谢谢你,现在我明白了 – user192082107 2013-02-22 09:12:55

2

更具体地说,打印功能(在Python 2.X它仍然是一个关键字,但此处无关紧要)做这样的事情

import sys 
def print(message): 
    sys.stdout.write(message) 

,这样,当你称它会在sys.stdout上打印你的消息。但是,如果用包含.write方法的对象覆盖sys.stdout,那么它将调用该方法。 这就是duck-typing的魔力。

相关问题