python输出重定向

sys.stdout输出重定向

收集sys.stdout写入输出缓冲区的内容写入txt文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os

BASE_DIR = os.path.dirname(__file__)
class _ResultCollector:
"""重定向sys.stdout,将输出缓冲区的内容写入指定路径下的指定文档,用于后期测试"""

def __init__(self, filename="Default.txt"):
try:
os.mkdir('./results')
except FileExistsError:
pass
# 转移sys.stdout,不妨碍sys.stdout的正常使用
self.terminal = sys.stdout
# 创建存放输出的文件
res_dir = os.path.join(BASE_DIR, 'results/{}'.format(filename))
self.result = open(res_dir, 'a')

def write(self, message):
"""
进行重定向文件的写,以及正常的sys.stdout的写
:param message: 输出缓冲区的内容 type str
:return:
"""
self.terminal.write(message)
self.result.write(message)

# def flush(self):
# self.terminal.flush()
#
# def getvalue(self):
# self.terminal.getvalue()