如何将bash命令的输出放入Python变量?

2024-04-29 10:35:52 发布

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

如何将bash命令的输出放入Python变量?在

我正在编写一个Python脚本,我想输入 bash命令: rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} %{VENDOR}\n' | grep -v 'Red Hat'|wc -l,并将其放入Python变量,比如R。在

之后我想做的是,Python if R != 0 然后运行一些Linux命令。 我怎样才能做到呢?在


Tags: name命令脚本bashreleaseversionhatred
3条回答

有各种各样的选项,但最简单的可能是使用subprocess.check_output()和{}一起使用,尽管如果不能完全控制传入的命令,这可能会带来安全隐患。在

import subprocess
var = subprocess.check_output('rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} %{VENDOR}\n' | grep -v 'Red Hat'|wc -l', shell = True)
var = int(var)

您需要使用shell=True,否则将不会解释管道。在

如果您需要更多的控制,您可能需要查看^{}中可以执行的操作:

^{pr2}$

虽然我可能不会调用wc并在python中获取整个输出并计算其长度(更容易检查是否只得到了预期的行,但是通过wc -l的管道会忽略所有细节)

你可以使用stdin。在

#!/usr/bin/python

import  sys

s = sys.stdin.read()
print s

然后您将运行这样的bash命令

^{pr2}$

输出

Hello

我推荐envoy,主要是因为API在90%的用例中使用起来更加直观。在

r = envoy.run('ls ', data='data to pipe in', timeout=2)
print r.status_code  # returns status code
print r.std_out  # returns the output.

有关详细信息,请参见Envoy Github页。在

相关问题 更多 >