【发布时间】:2012-04-01 16:13:48
【问题描述】:
我正在尝试从需要做几件事的 python 脚本中运行 shell 命令
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() 还是默认等待?
【问题讨论】:
-
communicate() 等待进程退出docs.python.org/library/…
标签: python