我想在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
答案 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()]