将命令的输出存储在变量中

时间:2015-06-18 13:12:36

标签: python fabric

我有一个python结构文件fabfile.py。我希望将一个本地命令的结果存储在一个变量中,以便我可以针对各种情况对其进行测试。例如,我想这样做......

substring = "up-to-date"  
msg = local("git pull")
if msg.find(substring) == -1:
   "some action"

但我无法将输出存储在“msg变量”中。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

我以前做过这个的方式是:

import subprocess

p = subprocess.Popen(['git', 'pull'], stdout=subprocess.PIPE, 
                                      stderr=subprocess.PIPE)
out, err = p.communicate()

if "up-to-date" in out:
   "some action"

答案 1 :(得分:1)

我找到了解决方案,非常简单。我们只需要传递另一个参数capture=truelocal来将命令的输出存储在一个变量中。

substring = "up-to-date"
msg = local("git pull", capture=true)
if substring in msg:
  "do something"
else:
  "do something else"

答案 2 :(得分:0)

如果您使用的是2.6以上版本的Python,则可以使用popen,如下例所示。

import os
substring = "up-to-date"
msg = os.popen("git pull").read()
if msg.find(substring) == -1 :
   print "do something"