分享Python获取本机IP地址的几种方法


Posted in Python onMarch 17, 2022

1、使用专用网站

获取的是公网IP

网址:http://myip.ipip.net

代码:

import requests
res = requests.get('http://myip.ipip.net', timeout=5).text
print(res)

比较喜欢用这个,在命令窗口也能使用:

curl http://myip.ipip.net

分享Python获取本机IP地址的几种方法

2、使用自带socket库

获取的是局域网IP。

import socket
# 函数 gethostname() 返回当前正在执行 Python 的系统主机名
res = socket.gethostbyname(socket.gethostname())
print(res)

但是上面这个获取的不是公网IP,结果也不稳定(这里获取了虚拟机下的IP),不建议使用。

分享Python获取本机IP地址的几种方法

 如果计算机设备有连接到 Internet 的路由,可以使用:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])

这个获得的是局域网IP:

分享Python获取本机IP地址的几种方法

可以ipconfig看一下:

分享Python获取本机IP地址的几种方法

另一个适用于所有接口。它还适用于所有公共、私有、外部 IP。这种方法在 Linux、Windows 和 OSX 上很有效。

import socket
def extract_ip():
    st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:       
        st.connect(('10.255.255.255', 1))
        IP = st.getsockname()[0]
    except Exception:
        IP = '127.0.0.1'
    finally:
        st.close()
    return IP
print(extract_ip())

注意:如果本身局域网IP就是公网IP的话,那这个获得的,可以认为是公网IP了。

3、使用第三方netifaces库

获取的是局域网IP。

netifaces 模块用于提供有关网络接口及其状态的信息。

代码:

没装的先装一下库

pip3 install netifaces

然后使用:

from netifaces import interfaces, ifaddresses, AF_INET
for ifaceName in interfaces():
    addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
    print(' '.join(addresses))

分享Python获取本机IP地址的几种方法

到此这篇关于分享Python获取本机IP地址的几种方法的文章就介绍到这了,更多相关Python获取本机IP方法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python获取本地计算机名字的方法
Apr 29 Python
Python编程中用close()方法关闭文件的教程
May 24 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
在Python中移动目录结构的方法
Jan 31 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
django的autoreload机制实现
Jun 03 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
python实现Thrift服务端的方法
Apr 20 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
使用python求解迷宫问题的三种实现方法
Python超详细分步解析随机漫步
yolov5返回坐标的方法实例
Mar 17 #Python
PyTorch中的torch.cat简单介绍
Mar 17 #Python
Python Pygame实战在打砖块游戏的实现
python超详细实现完整学生成绩管理系统
Mar 17 #Python
Python Pygame实战之塔防游戏的实现
You might like
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
js tab 选项卡
2009/04/26 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
详解Python中where()函数的用法
2018/03/27 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
小学学校评估方案
2014/06/08 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
java多态注意项小结
2021/10/16 Java/Android
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python