代码
tee是linux下的一个命令行工具,通过pipe可以将程序的输出同时输出到屏幕和文件。
python下也可以实现这样的效果,代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import sys
class Tee(object):
def __init__(self, name, mode):
self.file = open(name, mode)
self.stdout = sys.stdout
sys.stdout = self
def __del__(self):
sys.stdout = self.stdout
self.file.close()
def write(self, data):
self.file.write(data)
self.stdout.write(data)
def flush(self):
self.file.flush()
Tee这个类在初始化方法里接管了标准输出,此后程序中所有的print都会输出到文件。
例子
1 | from Tee import Tee |
‘log.txt’中的内容为1
2[1, 3, 5, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] <type 'list'>