python 获取本机IP
获取本机所有 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 地址类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?