我需要实现这个:
def x():
subprocess.Popen(...)
我无法修改x()
但是我需要达到(抑制)stderr
/stdout
内部Popen
呼叫。
我需要这样的东西:
with suppress_subprocess:
x()
。或类似的东西。
从 x 函数返回 popen 对象,然后从调用者文件中访问他,如下所示:
def x():
return subprocess.Popen(...)
p= x()
print p.stdout
print p.stderr
print p.returncode
等。。。。
没有直接和简单的方法。您必须确定子进程的PID,并从另一个线程弄乱其UNIX文件描述符。混乱。
正弦
。我需要达到(抑制)
stderr
/stdout
...
您是否尝试过此处描述的方法,即在 Python 中静默函数的 stdout,而无需丢弃 sys.stdout 并恢复每个函数调用?
在您的情况下,它可以是这样的
import io
import sys
save_stdout = sys.stdout
suppress_stdout():
try:
sys.stdout = io.BytesIO()
x()
finally:
sys.stdout = save_stdout