繁体   English   中英

在python中列出理解错误?

[英]List comprehension in python error?

我想在python的3D列表中获取nmcli(linux)的结果。

nmcli device show的示例输出nmcli device show

通用设备:wlan0
通用类型:wifi
GENERAL.HWADDR ::::::
一般MTU:1500
一般状态:100(已连接)
通用连接:
GENERAL.CON-PATH:/ org / freedesktop / NetworkManager / ActiveConnection / 2
IP4.ADDRESS [1]:192.168.1.106/16
IP4网关:192.168.1.1
IP4.ROUTE [1]:dst = 0.0.0.0/0,nh = 192.168.1.1,mt = 600
IP4.ROUTE [2]:dst = 192.168.0.0/16,nh = 0.0.0.0,mt = 600
IP4.DNS [1]:192.168.1.1
IP6.ADDRESS [1]:::::::: /
IP6.ADDRESS [2]:::::: /
IP6网关::::::
IP6.ROUTE [1]:dst = ::::: //,nh = ::,mt = 600
IP6.ROUTE [2]:dst = :: / 0,nh = fe80 :: 30ae:bfff:fe20:64d,mt = 600
IP6.ROUTE [3]:dst = :: /,nh = ::,mt = 256,表格= 255
IP6.ROUTE [4]:dst = :: /,nh = ::,mt = 256
IP6.ROUTE [5]:dst = :: /,nh = ::,mt = 600
IP6.DNS [1]::::::
IP6.DNS [2]::::::::

通用设备:eth0
通用类型:以太网
GENERAL.HWADDR ::::::
一般MTU:1500
一般状态:20(不可用)
一般连接:-
一般路径:-
WIRED-PROPERTIES.CARRIER:关闭

通用设备:lo
GENERAL.TYPE:环回
一般.HWADDR:00:00:00:00:00:00
一般MTU:65536
一般状态:10(非托管)
一般连接:-
一般路径:-
IP4.ADDRESS [1]:127.0.0.1/8
IP4网关:-
IP6.ADDRESS [1]::: 1/128
IP6网关:-

如您所见,存在三个接口:wlan0,eth0和lo。 我想要接口列表(3D)中的行列表中的列列表。

我用子过程来得到结果

r1 = subprocess.run(['nmcli', 'device', 'show'], stdout=subprocess.PIPE)
r2 = [y.split() for y in [z.split('\n') for z in r1.split('\n\n')]]

但我收到以下错误

  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcom>
AttributeError: 'list' object has no attribute 'split'

有什么建议么?

PS:我在python 3.6.3 shell上运行了

[z.split('\\n') for z in r1.split('\\n\\n')][z.split('\\n') for z in r1.split('\\n\\n')]的结果是一个列表列表,因此在对其进行迭代时,您尝试拆分列表而不是列表串。 错误在y.split()

我认为您想要的是:

r2 = [[y.split() for y in z.split('\n')] for z in r1.split('\n\n')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM