python获取本机所有IP地址的方法
原链接:https://pythonjishu.com/gygjrclwnkmhnlf/ 2023年5月23日 下午12:35 • python获取本机所有 IP 地址的方法,可以通过 Python 标准库中的 socket 模块来实现。下面是完整攻略:
1. 使用 socket 模块
先导入 socket 模块,然后创建一个 socket 对象。使用 gethostname()
方法获取主机名,然后使用 getaddrinfo()
方法获取本机 IP 地址信息,进而获得本机所有 IP 地址。
示例代码如下:
import socket
# 获取本机所有 IP 地址
hostname = socket.gethostname()
ip_list = []
# 获取IP地址信息
addr_infos = socket.getaddrinfo(hostname, None)
for addr in addr_infos:
ip_list.append(addr[4][0])
print(ip_list)
示例输出:
['192.168.1.101', 'fe80::fc4d:b2de:d449:2f5d']
以上代码可以获取本机所有的IPv4和IPv6地址。
2. 使用 netifaces 模块
还可以使用第三方模块 netifaces 包来获取本机 IP 地址。该模块提供了一个 interfaces()
方法,可以返回本机所有网络接口信息。然后使用 ifaddresses()
方法获取每个接口的 IP 地址信息。
示例代码如下:
import netifaces
# 获取本机所有 IP 地址
ip_list = []
for interface in netifaces.interfaces():
# 获取当前网络接口的所有地址
addrs = netifaces.ifaddresses(interface)
# 获取IPv4地址
if netifaces.AF_INET in addrs:
for addr_dict in addrs[netifaces.AF_INET]:
ip_list.append(addr_dict['addr'])
print(ip_list)
示例输出:
['192.168.1.101']
以上示例代码只能获取本机的IPv4地址。
总结
使用 socket 模块和 netifaces 模块都可以获取本机所有的 IP 地址。socket 模块不依赖任何第三方模块;而 netifaces 模块需要安装,但是可以灵活控制获取到的 IP 地址类型。
标签:socket,python,IP,获取,地址,netifaces,模块,本机 From: https://www.cnblogs.com/mmld/p/17995859