我想使用Python将输出发送到终端上的文件log.txt
和STDOUT。这就是我所拥有的:
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
该程序将输出发送到文件和标准输出。我的问题是:如何调用文件的写入函数?
答案 0 :(得分:3)
来自documentation for sys.stdout:
stdout和stderr不需要是内置文件对象:任何对象都是可以接受的,只要它有一个带有字符串参数的write()方法。
答案 1 :(得分:2)
更具体地说,打印功能(在Python 2.X中它仍然是一个关键字,但这里没关系)做这样的事情
import sys
def print(message):
sys.stdout.write(message)
这样,当你调用它时,它会在sys.stdout上打印你的消息。但是,如果用包含.write方法的对象覆盖sys.stdout,那么它将调用该方法。 这是duck-typing的魔力。