2024-04-29 10:35:52 发布
网友
如何将bash命令的输出放入Python变量?在
我正在编写一个Python脚本,我想输入 bash命令: rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} %{VENDOR}\n' | grep -v 'Red Hat'|wc -l,并将其放入Python变量,比如R。在
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} %{VENDOR}\n' | grep -v 'Red Hat'|wc -l
R
之后我想做的是,Python if R != 0 然后运行一些Linux命令。 我怎样才能做到呢?在
if R != 0
有各种各样的选项,但最简单的可能是使用subprocess.check_output()和{}一起使用,尽管如果不能完全控制传入的命令,这可能会带来安全隐患。在
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,否则将不会解释管道。在
shell=True
如果您需要更多的控制,您可能需要查看^{}中可以执行的操作:
虽然我可能不会调用wc并在python中获取整个输出并计算其长度(更容易检查是否只得到了预期的行,但是通过wc -l的管道会忽略所有细节)
wc
wc -l
你可以使用stdin。在
#!/usr/bin/python import sys s = sys.stdin.read() print s
然后您将运行这样的bash命令
输出
Hello
我推荐envoy,主要是因为API在90%的用例中使用起来更加直观。在
envoy
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页。在
有各种各样的选项,但最简单的可能是使用}一起使用,尽管如果不能完全控制传入的命令,这可能会带来安全隐患。在
subprocess.check_output()
和{您需要使用
shell=True
,否则将不会解释管道。在如果您需要更多的控制,您可能需要查看^{} 中可以执行的操作:
^{pr2}$虽然我可能不会调用
wc
并在python中获取整个输出并计算其长度(更容易检查是否只得到了预期的行,但是通过wc -l
的管道会忽略所有细节)你可以使用stdin。在
然后您将运行这样的bash命令
^{pr2}$输出
我推荐
envoy
,主要是因为API在90%的用例中使用起来更加直观。在有关详细信息,请参见Envoy Github页。在
相关问题 更多 >
编程相关推荐