执行命令并将输出存储到变量中
我现在正在尝试写一个Python脚本,这个脚本要做很多事情,其中之一就是调用一个可执行文件,并把这个可执行文件发送到标准输出(stdout)的内容存储到一个变量里。以下是我现在的代码:
1 #!/usr/bin/python
2 import subprocess
3
4 subprocess.call("./pmm", shell=True)
我该怎么做才能把pmm的输出存储到一个变量里呢?
4 个回答
1
我之前写过一篇关于这个的帖子:
http://trifoliummedium.blogspot.com/2010/12/running-command-line-with-python-and.html
可以使用 p.communicate() 来获取标准输出和错误输出。
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'
5
在编程中,有时候我们会遇到一些问题,可能会让我们感到困惑。比如,有人可能在使用某个工具或语言时,发现它的某些功能没有按照预期工作。这种情况很常见,尤其是对于刚开始学习编程的人来说。
在这种情况下,最好的办法就是去查找相关的资料,看看有没有其他人遇到过类似的问题。通常,网上会有很多讨论和解决方案,可以帮助我们理解问题的根源。
另外,记得多尝试不同的方法来解决问题,有时候换个思路就能找到答案。编程就是一个不断学习和尝试的过程,不要害怕犯错,因为每一次错误都是一次学习的机会。
总之,遇到问题时,保持耐心,积极寻找解决方案,慢慢你就会变得越来越熟练。
p = subprocess.Popen(["./pmm"], shell=False, stdout=subprocess.PIPE)
output = p.stdout.read()