分配我想启动一个进程并检索stdout
and stderr
。我真的不关心实时获得这个。
我想使用subprocess.check_ouput()
,但该过程可能会失败。阅读 StackOverflow 和 Python 文档后,我添加了一个try .. catch
块:
def execute(cmd,timeinsec=60):
print("execute ",cmd, " with time out ",timeinsec)
try:
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, timeout=timeinsec,universal_newlines=True)
except subprocess.TimeoutExpired:
print("timeout expired")
return "",2
except subprocess.CalledProcessError:
print("called process failed")
return "",1
print ('The command returned the following back to python:'+output)
return output,0
但是当我打印输出时, output.decode('utf-8')
我只得到输出的第一行。
注意:我在 Windows 上随 Msysgit 1.8 分发的 MSys 环境中运行它。
你知道什么是错的吗?你知道有什么更好的方法吗?