我有一个python结构文件fabfile.py。我希望将一个本地命令的结果存储在一个变量中,以便我可以针对各种情况对其进行测试。例如,我想这样做......
substring = "up-to-date"
msg = local("git pull")
if msg.find(substring) == -1:
"some action"
但我无法将输出存储在“msg变量”中。我怎么能这样做?
答案 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=true
和local
来将命令的输出存储在一个变量中。
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"