分享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函数返回多个值的示例方法
Dec 04 Python
Python随机生成数模块random使用实例
Apr 13 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
使用python socket分发大文件的实现方法
Jul 08 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
Python timeit模块原理及使用方法
Oct 10 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
Python 数据可视化之Seaborn详解
Nov 02 Python
Python 匹配文本并在其上一行追加文本
May 11 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生成缩略图的代码
2011/01/12 PHP
如何在php中正确的使用json
2013/08/06 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
layui table 参数设置方法
2018/08/14 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
Python求两个list的差集、交集与并集的方法
2014/11/01 Python
Python的gevent框架的入门教程
2015/04/29 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
经管应届生求职信范文
2014/05/18 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
Java版 单机五子棋
2022/05/04 Java/Android
SQL Server中使用表变量和临时表
2022/05/20 SQL Server
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android