簡體   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