作爲一個業餘愛好項目我試圖在互聯網上製作一個公共可用路由監聽器的網格,爲此,我登錄到所有人並詢問他們他們是誰,他們是誰,直接連接到他們。這工作正常,現在我正在嘗試將它們配對。理解循環和多維數組
數學很簡單,如果在IP地址的最後八位字節爲偶數,它的合作伙伴必須是下一個奇數,反之亦然(有一些例外,但我做的那些手動)
現在,如果你在這裏運行腳本,你不會得到任何結果,我這樣做的目的是爲了說明一個問題,我不知道我如何反向問題解決。
運行這一點,我會得到沒有錯誤,但如果我添加其他元素到列表中
['ROUTER5124-A', '100.127.126.16', 'te0/0/24']
我得到這個錯誤:如果我打印出來裏面有什麼linknetsloop.remove
Traceback (most recent call last):
File "zac.py", line 38, in <module>
linknetsloop.remove(sublist)
ValueError: list.remove(x): x not in list
(子列表)和 linknetsloop.remove(items)它想要刪除我添加的額外元素,實際上是兩次。這是奇怪的,因爲它是合作伙伴.17甚至沒有。我認爲錯誤是我在錯誤列表中循環,但在搜索幾個小時後我找不到我的錯誤。
#!/usr/bin/python3.5
import re
import ipaddress
linknets = [
['ROUTER1190-A', '100.127.126.81', 'te0/0/2'] ,
['ROUTER1190-A', '100.127.126.83', 'te0/0/3'] ,
['ROUTER1323-A', '100.127.126.125', 'te0/0/24'] ,
['ROUTER1323-A', '100.127.126.97', 'te0/0/25'] ,
['ROUTER1242-B', '100.127.126.173', 'te0/0/25'] ,
['ROUTER1190-B', '100.127.126.55', 'te0/0/24'] ,
['ROUTER1190-B', '100.127.126.57', 'te0/0/25'] ,
['ROUTER1190-C', '100.127.126.171', 'te0/0/24'] ,
['ROUTER1190-C', '100.127.126.59', 'te0/0/25'] ,
['ROUTER5345-A', '100.127.126.25', 'te1/0/12'] ,
['ROUTER5345-A', '100.127.126.47', 'te2/0/12'] ,
['ROUTER1610-A', '100.127.126.69', 'te0/0/24'] ,
['ROUTERP-1242', '100.127.126.85', 'eth1/1/3'] ,
['ROUTERP-1242', '100.127.126.63', 'eth1/1/4'] ,
['ROUTERP-1242', '100.127.126.104', 'eth1/2/1'] ,
]
linknetsloop = linknets
linknets_complete = []
for sublist in linknets:
search = 0
lastoctet = re.match('.*?([0-9]+)$', sublist[1]).group(1)
if int(lastoctet)%2==0: #Last octet is even
search = ipaddress.IPv4Address(sublist[1]) + 1
else:
search = ipaddress.IPv4Address(sublist[1]) - 1
for items in linknets:
if str(search) in items[1]:
print(sublist)
linknetsloop.remove(sublist)
linknetsloop.remove(items)
任何指針將很樂意讚賞
請從'linknets'發佈您想要的輸出 – Ajax1234
我希望linknets的輸出與我啓動腳本時的輸出相同,問題是當我添加另一個腳本失敗的隨機列表時。 – BIGFATTOBY
linknets的輸出是什麼? – Ajax1234