【发布时间】:2021-03-31 04:50:38
【问题描述】:
我正在尝试使用下面列出的数据读取两个 CSV 文件,比较每个文件的 MAC 地址,如果两个文件中都存在 MAC,则将以下信息写入第三个 CSV 文件(final.csv)
- mac、接口、vlan、ip
两个输入文件是:
- swfile - 来自交换机上 MAC 表的信息(mac 地址、接口、vlan)
- rtrfile - 来自路由器上 ARP 表的信息(mac 地址,IP 地址)
我可以运行单个文件并获取所有信息,但是当我添加代码以包括读取和比较第二个文件时,我只从第一个文件中获取第一个 mac,它与中的 MAC 进行比较第二个文件,然后它结束。它不会遍历第一个文件中的其余 MAC。
这是示例 swfile 数据:
00:40:58:0E:28:2E,Gi1/0/50,1
00:40:84:21:26:6A,Gi2/0/36,1
00:4E:01:B3:58:67,Gi2/0/50,1
00:C0:B7:D9:C6:8A,Gi3/0/49,1
00:C0:B7:D9:CD:2B,Gi3/0/48,1
00:C0:B7:D9:CD:87,Gi2/0/49,1
00:C0:B7:F7:BC:9A,Gi1/0/50,1
这是示例 rtrfile 数据:
00:40:58:0E:28:2E,10.10.10.11
00:40:84:21:26:6A,10.10.10.21
00:4E:01:B3:58:67,10.10.10.95
00:C0:B7:D9:C6:8A,10.10.10.19
00:C0:B7:D9:CD:2B,10.10.10.14
00:C0:B7:D9:CD:87,10.10.10.15
00:C0:B7:F7:BC:9A,10.10.10.16
这是我目前的代码:
with open(rtrfile, 'r') as rfile:
rtrreader = csv.reader(rfile, delimiter=',')
with open(swfile, 'r') as sfile:
swreader = csv.reader(sfile, delimiter=',')
for row in rtrreader:
rmac = row[0]
for row in swreader:
smac = row[0]
if rmac == smac:
print("Found: " + rmac + " - " + smac)
正如我所说,它将从 rtrfile 读取第一个 MAC,从 swfile 中找到匹配的条目,打印它然后退出。它不会返回通过 rtrfile 来比较其余的 mac 地址。我该如何解决这个问题并使其能够将 rtrfile 中的所有 MAC 地址与 swfile 中的所有地址进行比较?
【问题讨论】:
标签: python-3.x csv