首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只调用python返回代码状态

只调用python返回代码状态
EN

Stack Overflow用户
提问于 2015-03-30 13:23:03
回答 2查看 104关注 0票数 1

我在python中有以下代码:

代码语言:javascript
复制
i = call(["salt-cloud", "-m", fileName, "--assume-yes"])
print (i)

i始终为0,因为操作已经完成。

问题是我想得到这个操作的输出。在我们的案例中:

代码语言:javascript
复制
window:
    ----------
    Error:
        ----------
        Not Deployed:
            Failed to start Salt on host window

是运行salt-cloud -m fileName --assume-yes的输出,它表示在此过程中引发的错误,我想知道。

我如何在Python中实现它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-30 13:31:01

使用check_output并捕获将引发任何非零退出状态的CalledProcessError

代码语言:javascript
复制
from subprocess import check_output, CalledProcessError    

try:
    out = check_call(["salt-cloud", "-m", fileName, "--assume-yes"]) 
    print(out)   
except CalledProcessError as e:
    print(e.message)

如果使用python < 2.7,则需要在python2.7中添加Popencheck_callcheck_output

代码语言:javascript
复制
from subprocess import Popen, PIPE

p = Popen(["salt-cloud", "-m", filename, "--assume-yes"],stderr=PIPE,stdout=PIPE)

out, err = p.communicate()

print( err if err else out)
票数 3
EN

Stack Overflow用户

发布于 2015-03-30 13:26:07

假设您使用的是subprocess.call,您可能想看看输出(),它以字节字符串的形式返回子进程的输出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29347376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档