我正在使用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))
当我尝试打印stdout/stderr时,现在proc
未定义。
我该如何设置超时但仍捕获在超时之前打印的任何输出?
text=True
对timeErr
数据没有影响。我使用了outs = timeErr.stdout.decode()
。 - undefined