【发布时间】:2021-05-27 07:56:58
【问题描述】:
我有两个脚本如下,但我不能修改 foo.py 我在 bar.py 中编写了代码来捕获 foo.py 生成的输出,因此我可以在将输出输出到终端之前对其进行修改。
但是,捕获不起作用。我做错了什么?
foo.py
----
import sys
def some_func():
sys.stdout.write("hello")
sys.stdout.flush()
def foo():
some_func()
sys.exit(1)
这是我可以修改的模块:
bar.py
----
import io
from contextlib import redirect_stdout
from foo import foo
f = io.StringIO()
with redirect_stdout(f):
foo()
s = f.getvalue()
print(s)
编辑:
最终解决方案
import io
from contextlib import redirect_stdout
from foo import foo
def capture_output(func):
f = io.StringIO()
try:
with redirect_stdout(f):
func()
except SystemExit:
return f.getvalue()
capture_output(foo)
【问题讨论】: