输出来自subprocess.check_输出对于openstack CLI,Python中为空

2024-10-03 23:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python中的子进程执行OpenStack CLIopenstack volume list | grep -w my_vm1

output = subprocess.check_output(cmd, shell=True)

在这种情况下

^{pr2}$

我观察到输出是空的。当我尝试:

output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)

如果我打印输出变量,它会显示“type”异常.OSError'". 我错过什么了吗?在


Tags: cmdtrueoutputopenstack进程mycheck情况
1条回答
网友
1楼 · 发布于 2024-10-03 23:24:30

您似乎遇到了OSError异常。在

我通常在try/expect中运行子进程命令来捕捉问题,并使用pipe和communicate()从命令中获取输出。我觉得这个流程更符合逻辑。在

像这样:

try:
    cmd = 'openstack volume list | grep -w my_vm1'
    output = subprocess.check_output(cmd, 
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE)
    out, err = p.communicate()
    print(out)
except OSError:
    print(err)
    sys.exit(1)

假设您可以作为运行脚本的同一用户运行该命令,它应该可以工作。如果没有,这将显示一些错误消息,假设命令是按规则播放的。在

我希望这有帮助!在

相关问题 更多 >