用Python取目录下文件里的有线无线Mac地址

统计文件里的有线,无线网卡Mac地址,并存入excel

结果:

名字有线无线
a5A-87-5B-2C-21-A45D-87-3E-21-A4-1C

文件案例:

目录:/root/txt/
文件:a.txt (文件名及名字)


Windows IP 配置

   主机名  . . . . . . . . . . . . . : LAPTOP-7T69THJC
   主 DNS 后缀 . . . . . . . . . . . : 
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 
   WINS 代理已启用 . . . . . . . . . : 

以太网适配器 以太网 3:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Realtek PCIe GbE Family Controller #2
   物理地址. . . . . . . . . . . . . : 5A-87-5B-2C-21-A4
   DHCP 已启用 . . . . . . . . . . . : 
   自动配置已启用. . . . . . . . . . : 

无线局域网适配器 本地连接* 1:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft Wi-Fi Direct Virtual Adapter
   物理地址. . . . . . . . . . . . . : 5B-87-9C-21-A4-1D
   DHCP 已启用 . . . . . . . . . . . : 
   自动配置已启用. . . . . . . . . . : 

无线局域网适配器 本地连接* 2:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft Wi-Fi Direct Virtual Adapter #2
   物理地址. . . . . . . . . . . . . : 5E-87-9E-21-A4-1C
   DHCP 已启用 . . . . . . . . . . . : 
   自动配置已启用. . . . . . . . . . : 

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet1
   物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-01
   DHCP 已启用 . . . . . . . . . . . : 
   自动配置已启用. . . . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::7854:bcf:f690:557a%12(首选) 
   自动配置 IPv4 地址  . . . . . . . : 169.254.85.122(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . : 
   DHCPv6 IAID . . . . . . . . . . . : 721440854
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-26-F3-37-F9-5E-87-9F-2C-21-A4
   DNS 服务器  . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
   物理地址. . . . . . . . . . . . . : 00-50-56-C0-00-08
   DHCP 已启用 . . . . . . . . . . . : 
   自动配置已启用. . . . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::4d45:5289:7549:6e9%9(首选) 
   IPv4 地址 . . . . . . . . . . . . : 192.168.11.2(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 
   DHCPv6 IAID . . . . . . . . . . . : 738218070
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-26-F3-37-F9-5A-87-9B-2C-21-A4
   DNS 服务器  . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Intel(R) Wireless-AC 9560 160MHz
   物理地址. . . . . . . . . . . . . : 5D-87-3E-21-A4-1C
   DHCP 已启用 . . . . . . . . . . . : 
   自动配置已启用. . . . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : fe80::6dd1:30fe:400e:f7d6%18(首选) 
   IPv4 地址 . . . . . . . . . . . . : 10.2.0.22(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.252.0
   获得租约的时间  . . . . . . . . . : 2022年8月4日 9:36:28
   租约过期的时间  . . . . . . . . . : 2022年8月4日 17:50:52
   默认网关. . . . . . . . . . . . . : 10.2.3.254
   DHCP 服务器 . . . . . . . . . . . : 10.2.3.254
   DHCPv6 IAID . . . . . . . . . . . : 190613404
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-26-F3-37-F9-5D-87-9E-2F-21-A4
   DNS 服务器  . . . . . . . . . . . : 114.114.114.114
                                       222.246.129.80
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用


先用csv写个简单的,excel同理,
基于以下假设:
一、你有很多这样的主机信息需要截取MAC地址
二、每台主机都最多只有真实的有线网卡与无线网卡各一个
三、所有主机都是中文系统、格式也与例子中相似

filelist = ['a.txt']
maclist = []

for file in filelist:
    with open(file,encoding='utf-8') as f:
        p = f.readlines()

    # 第一步:分块,使用数据结构为嵌套字典
    i = 0
    nic = {}
    while i<len(p):
        if "适配器" in p[i]: # 找到网卡信息,进行分块
            j = i+1
            while j<len(p) and "适配器" not in p[j]:
                temp = p[j].split(':')
                if len(temp)>1: # 去除空行
                    nic.setdefault(p[i].strip(),dict())[temp[0].strip('. ')] = temp[1].strip()
                j += 1
            i = j-1
        i += 1

    # 第二步:去除虚拟网卡,并把真实的有线与无线网卡MAC地址截取出来
    temp = [file,'','']
    for key, value in nic.items():
        if "Virtual" not in value['描述']:
            if "无线" in key:
                temp[2] = value['物理地址']
            else:
                temp[1] = value['物理地址']
    maclist.append(temp)


# 第三步:将所有的MAC地址(二维列表)写入csv
import csv
with open('mac.csv','w',newline='') as f:
    w = csv.writer(f)
    w.writerow(['名字','有线','无线'])
    w.writerows(maclist)
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^