You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python获取带子网掩码的本地网络地址?

获取本地网络地址与子网掩码的Python实现

你可以通过第三方库netifaces轻松获取本地网络的IP地址、子网掩码及网络地址,该库跨平台支持Windows、Linux和macOS。

步骤1:安装netifaces库

首先通过pip安装依赖:

pip install netifaces

步骤2:编写代码提取网络信息

以下代码会遍历所有网络接口,提取IPv4相关信息并存入变量:

import netifaces
import struct
import socket

# 存储所有网络接口信息的列表
network_info_list = []

# 获取系统中所有网络接口
interfaces = netifaces.interfaces()

for iface in interfaces:
    # 获取当前接口的所有地址信息
    addr_details = netifaces.ifaddresses(iface)
    
    # 筛选IPv4类型的地址(AF_INET对应IPv4)
    if netifaces.AF_INET in addr_details:
        ipv4_data = addr_details[netifaces.AF_INET][0]
        
        # 提取IP地址和子网掩码
        ip_addr = ipv4_data['addr']
        subnet_mask = ipv4_data['netmask']
        
        # 计算网络地址(IP与子网掩码按位与)
        ip_packed = socket.inet_aton(ip_addr)
        mask_packed = socket.inet_aton(subnet_mask)
        network_packed = struct.pack('!I', struct.unpack('!I', ip_packed)[0] & struct.unpack('!I', mask_packed)[0])
        network_addr = socket.inet_ntoa(network_packed)
        
        # 将信息存入字典,再加入列表
        interface_info = {
            'interface_name': iface,
            'ip_address': ip_addr,
            'subnet_mask': subnet_mask,
            'network_address': network_addr
        }
        network_info_list.append(interface_info)

# 打印结果(可根据需求直接使用network_info_list变量)
for info in network_info_list:
    print(f"接口: {info['interface_name']}")
    print(f"IP地址: {info['ip_address']}")
    print(f"子网掩码: {info['subnet_mask']}")
    print(f"网络地址: {info['network_address']}\n")

关键说明

  • netifaces.interfaces():返回系统中所有网络接口的名称(如eth0、Wi-Fi等)
  • netifaces.ifaddresses(iface):获取指定接口的所有地址类型信息
  • AF_INET:代表IPv4地址族,通过它筛选出IPv4相关数据
  • 网络地址计算:将IP和子网掩码转换为二进制后按位与,再转回字符串格式,得到当前网段的网络地址

如果不想依赖第三方库,也可以通过调用系统命令(如ipconfig或ifconfig)并解析输出,但这种方法兼容性差且易出错,推荐优先使用netifaces。

内容的提问来源于stack exchange,提问作者Jay Chung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:40:32