我想在Python脚本中运行一个shell命令,并需要做以下几件事情:
1. shell命令为'hspice tran.deck >! tran.lis'
2. 脚本应该等待shell命令完成后再继续
3. 我需要检查命令的返回代码,
4. 如果成功执行则捕获STDOUT,否则捕获STDERR
此外,在process = line之后,我应该使用process.wait(),还是它默认会等待?
1. shell命令为'hspice tran.deck >! tran.lis'
2. 脚本应该等待shell命令完成后再继续
3. 我需要检查命令的返回代码,
4. 如果成功执行则捕获STDOUT,否则捕获STDERR
我使用subprocess模块尝试了几个方法,但无法找到同时满足以上所有条件的方法。
- 使用subprocess.call(),我可以检查返回代码但无法捕获输出。
- 使用subprocess.check_output(),我可以捕获输出但无法获取代码。
- 使用subprocess.Popen()和Popen.communicate(),我可以捕获STDOUT和STDERR但无法获取返回代码。
我不确定如何使用Popen.wait()或returncode属性。我也无法让Popen接受“>!”或“|”作为参数。
请有人指点一下方向吗?我正在使用Python 2.7.1版本。
编辑:我用以下代码使事情运转起来了。
process = subprocess.Popen('ls | tee out.txt', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
if(process.returncode==0):
print out
else:
print err
此外,在process = line之后,我应该使用process.wait(),还是它默认会等待?