gpt4 book ai didi

python - 将终端输出写入终端和文件?

转载 作者:行者123 更新时间:2023-12-01 03:41:04 26 4
gpt4 key购买 nike

我有不同的函数,它们在函数执行期间在终端中提供字符串和文本输出。我使用的命令是sys.stdout.write

在其中一个函数中,我创建一个文件并调用上面提到的那些函数。运行此函数时,我需要编写所有 sys.output.write文件中不同函数的输出以及终端的输出。

示例代码如下:

def func1():
sys.stdout.write('A')
sys.stdout.write('B')

def func2():
sys.stdout.write('C')
sys.stdout.write('D')
def main():
fileName=open("log.txt","W+")
func1()
func2()
--------------------
# need output ABCD both in terminal and write in logfile as well
# unfortunately cannot change anything in func1() and func2()

最佳答案

使用上下文管理器创建一个写入文件的包装器和stdout:

class Tee(object):
def __init__(self, log_file_name, stdout):
self.log_file_name = log_file_name
self.stdout = stdout

def __enter__(self):
self.log_file = open(self.log_file_name, 'a', 0)
return self

def __exit__(self, exc_type, exc_value, exc_traceback):
self.log_file.close()

def write(self, data):
self.log_file.write(data)
self.stdout.write(data)
self.stdout.flush()

def main():
with Tee('log.txt', sys.stdout) as sys.stdout:
func1()
func2()

不要忘记在每次写入后刷新stdout,因为它已被缓冲。

关于python - 将终端输出写入终端和文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39629435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com