如何在列表或数组的python脚本中保存shell-script-printout?

时间:2017-05-11 14:00:25

标签: python list shell output

我想在python脚本中运行shell命令。并将打印输出保存在列表或数组中。

例如print out of shell命令如下

root@cic-1:~# for i in $(neutron net-list | grep -i cscf2 | awk '{print $2}'); do neutron net-show $i | grep -i segmentation|awk '{print $4}' ; done
2006
2022
2023
2081
root@cic-1:~#

我希望将此打印输出保存在像这样的列表中

[2006,2022,2023,2081]

我已经完成了如下的python代码

#!/usr/pkg/bin/python
import subprocess

vlans= subprocess.Popen ("for i in $(neutron net-list | grep -i cscf2 | awk '{print $2}'); do neutron net-show $i | grep -i segmentation|awk '{print $4}' ; done", shell=True, stdout=subprocess.PIPE).communicate()[0]
print vlans[0]

输出为2,但我希望vlans [0]为2006

1 个答案:

答案 0 :(得分:0)

您可以使用subprocess.check_output(更多)轻松捕获命令的输出。这在功能上等同于你所拥有的。

vlans = subprocess.check_output(
    "for i in $(neutron net-list | grep -i cscf2 | awk '{print $2}'); "
    "do neutron net-show $i | grep -i segmentation|awk '{print $4}' ; done")

如果你想将vlan作为字符串列表,你可以这样做:

vlans = vlans.splitlines()

如果你想要一个整数列表,请改为:

vlans = [int(v) for v in vlans.splitlines()]