【发布时间】:2021-02-14 19:29:48
【问题描述】:
我正在使用subprocess.run 运行命令并捕获输出,如下所示:
proc = subprocess.run([commandAndFlags], capture_output=True)
if proc.stdout:
print('stdout:', str(proc.stdout))
if proc.stderr:
print('stderr:', str(proc.stderr))
我想添加一个超时,但仍会在超时前捕获发送到 stdout/stderr 的任何输出。
但是,如果我简单地添加超时并将其包装在 try/except 中,我将无法捕获子进程输出。
try:
proc = subprocess.run([commandAndFlags], capture_output=True, timeout=2000)
except subprocess.TimeoutExpired:
print('Timeout!!')
if proc.stdout:
print('stdout:', str(proc.stdout))
if proc.stderr:
print('stderr:', str(proc.stderr))
现在proc 在我尝试打印 stdout/stderr 时未定义。
如何设置超时但仍捕获超时前打印的任何输出?
【问题讨论】:
标签: python python-3.x subprocess