执行命令并将其输出存储在变量中

oad*_*ams 2 python

我目前正在尝试编写一个python脚本,在许多方面,它调用可执行文件并存储可执行文件在变量中发送给stdout的内容.这是我有的:

 1 #!/usr/bin/python
  2 import subprocess
  3 
  4 subprocess.call("./pmm", shell=True)
Run Code Online (Sandbox Code Playgroud)

如何将pmm的输出存储在变量中?

Sve*_*ach 6

在Python 2.7(和3.1或更高版本)中,您可以使用subprocess.check_output().文档中的示例:

>>> subprocess.check_output(["ls", "-l", "/dev/null"])
'crw-rw-rw- 1 root root 1, 3 Oct 18  2007 /dev/null\n'
Run Code Online (Sandbox Code Playgroud)


Dan*_* D. 5

p = subprocess.Popen(["./pmm"], shell=False, stdout=subprocess.PIPE)
output = p.stdout.read()
Run Code Online (Sandbox Code Playgroud)

  • 如果进程产生大量输出,这可能会死锁.使用`p.communicate()`而不是`p.stdout.read()`.(参见[文档](http://docs.python.org/library/subprocess.html#subprocess.Popen.stdout) - 向上滚动一下.) (5认同)