IPy,一个超级有用的Python库

更多内容在

Python 的 IPy 库是一个专门用于处理 IP 地址和网络相关操作的第三方库。它提供了丰富的功能,可以帮助用户轻松地进行 IP 地址的解析、格式化、比较和范围计算等操作。以下是 IPy 库的一些主要特性和功能:

  1. IP 地址解析与表示:IPy 允许你将字符串形式的 IP 地址解析为 IP 对象,这些对象可以是 IPv4 或 IPv6 地址。一旦解析,你可以对这些对象执行各种操作。

  2. 网段和网络掩码处理:IPy 可以处理网段(CIDR 块)和网络掩码,允许你创建网络对象,计算广播地址和网络地址等。

  3. IP 地址类型判断:通过 IPy,你可以判断一个 IP 地址是私有的、公有的还是保留的。

  4. IP 地址转换:IPy 提供了多种转换方法,包括将 IP 地址转换为其整数表示、十六进制字符串和二进制字符串。

  5. 网段操作:你可以使用 IPy 来判断两个网段是否重叠,或者一个 IP 地址是否包含在某个网段内。

  6. 输出格式:IPy 允许你以不同的格式输出 IP 地址和网段,例如网络标识、前缀表示、十进制网络掩码格式或最后 IP 地址格式。

  • 一 使用IPy中的IP方法迅速格式化

(1)查看地址是IPv4还是IPv6​​​​​​​

from IPy import *
if __name__ == "__main__":     print(IP('10.10.0.0/16').version())    print(IP('::1').version())

(2)格式化输出IPV4和IPV6的地址

​​​​​​​

from IPy import *
if __name__ == "__main__":     print(IP('127.0.0.1'))    print(IP('192'))    print(IP(0x8f000011))    print(IP('1080:0:0:0:8:800:200C:417A'))

(3)子网掩码及网段前缀转换

​​​​​​​

from IPy import *
if __name__ == "__main__":     print(IP('192.0.0.0/8'))    print(IP('192.0.0.0/255.0.0.0'))    print(IP('1.0.0.0-1.255.255.255'))

(4)已知IP的子网掩码,求出该地址的网段

​​​​​​​

from IPy import *
if __name__ == "__main__":     print(IP('127.0.0.1/255.0.0.0',make_net=True))    print(IP('12.1.0.1').make_net('255.255.255.224'))

(5)得到IP的掩码以及广播地址

​​​​​​​

from IPy import *
if __name__ == "__main__":     ip=IP('192.168.1.0/24')    print(ip.net())                 # 输出网络地址 192.168.1.0    print(ip.netmask())             # 输出掩码地址 255.255.255.0    print(ip.broadcast())           # 输出广播地址 192.168.1.255

  • 二 使用IPy中的IP方法迅速格式化

(1)IP地址转换的高级用法

​​​​​​​

from IPy import *
if __name__ == "__main__":     ip_address=IP('192.168.12.4')    print(ip_address.iptype())   #解析地址的"公网,私网属性" 192.168.100.0为私有网段    print(ip_address.int())      # 把192.168.12.4换成整数    print(ip_address.strHex())   # 把192.168.12.4 转成成16进制    print(ip_address.strBin())   # 把192.168.12.4 转成成二进制

(2)IP地址转换成字符串

可以通过strNomal方法指定不同的wantprefixlen参数定制不同输出类型的网段输出为字符串。

wantprefixlen = 0 ,无返回的意思

wantprefixlen = 1 ,返回前缀的类型

wantprefixlen = 2 ,返回网段/子网掩码的类型

wantprefixlen = 3 ,返回IP地址范围的类型

​​​​​​​

from IPy import *
if __name__ == "__main__":     print(IP('192.0.0.0/24').strNormal())    print(IP('192.0.0.0/24').strNormal(0))    print(IP('192.0.0.0/24').strNormal(1))    print(IP('192.0.0.0/24').strNormal(2))    print(IP('192.0.0.0/24').strNormal(3))

(3)IP处理IP地址段的包含关系

涉及处理两个网段是否包含的关系,IPy中的IP方法也提供了这个功能,会返回一个布尔值告诉我们是否包含:

​​​​​​​

from IPy import *
if __name__ == "__main__":     print(IP('192.168.1.0/24') < IP('192.168.2.0/24'))       #判断IP网段大小    print(IP('192.168.1.1/24') in IP('192.168.1.0/24'))      # 判断一个IP网段是否包含于另一个IP网段    print(('192.168.1.1' in IP('192.168.1.0/24')))           # 判断一个IP地址是否包含于另一个IP网段

(4)得到该IP网段下所有的IP

​​​​​​​

from IPy import *
if __name__ == "__main__":     ip=IP('192.168.0.0/28')    print(ip.len())    for x in ip:        print(x)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/463521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

展开说说:Android之SharedPreferences

SharedPreferences 是一种轻量级的数据持久化存储机制。以key/value键值对形式存储在xml文件&#xff0c;用于保存一些应用程序数据。保存在 /data/data/PACKAGE_NAME/shared_prefs/xxx.Xml文件。 SharedPreferences 只能存储string&#xff0c;int&#xff0c;float&#xff…

实战!wsl 与主机网络通信,在 wsl 中搭建服务器。学了计算机网络,但只能刷刷面试题?那也太无聊了!这篇文章可以让你检测你的计网知识!

前言&#xff08;碎碎念&#xff09;&#xff1a;每次发布文章时&#xff0c;我都是一个纠结的过程。因为我给自己写笔记时&#xff0c;只需要记录自己不清晰或者易忘的知识点就可以了&#xff0c;但一旦想要作为文章发布&#xff0c;那么我就得考虑到很多人是纯新手&#xff0…

【Git】本地仓库关联远程仓库

Git 本地项目关联远程仓库 本地 本地已有项目 ● 项目 07.GitLocalTest 包含有一个js ○ test.js 远程仓库 ● 远程仓库地址 ○ https://github.com/Sonnenlicht77/gitTest.git ○ 仓库只有一个 readme.md 关联 1.本地 1.1 本地仓库 ● git init ● git add . ● gi…

[Node.js] Node.js 版本控制工具 nvm/n/fnm

文章目录 Node.jsNode.js 版本控制工具介绍nvm (Node Version Manager)nfnm (Fast Node Manager) Node.js Node.js 是一个开源与跨平台的 JavaScript 运行环境&#xff0c;它允许 JavaScript 运行&#xff0c; Node.js 使用事件驱动、非阻塞的 I/O 模型&#xff0c;使其轻量且…

HSE化工应急安全生产管理平台:衢州某巨大型化工企业的成功应用

在化工行业中&#xff0c;安全生产一直是至关重要的议题。为了提高生产安全性、降低成本并提升企业形象&#xff0c;衢州某巨大型化工企业引入了HSE化工应急安全生产管理平台&#xff0c;取得了显著的改善和获益。 该平台的核心功能包括风险管理和应急预案制定。通过对化工生产…

JVM学习-垃圾回收专题

目录 1.如何判断对象可以回收 1.1引用计数法 1.2可达性分析算法 1.3五种引用 1.4拓展&#xff1a;直接内存 2.垃圾回收算法 2.1标记清除算法 2.2标记整理算法 2.3复制 3.分代垃圾回收 3.垃圾回收器 3.1串行垃圾回收器 3.2吞吐量优先垃圾回收器 3.3响应时间优先垃圾回收器…

51单片机-AT24C02(I2C总线)

目录 一&#xff0c;介绍及元件工作原理 7.时序结构&#xff08;重要&#xff09; 8.i2C总线数据帧&#xff08;重要&#xff09; 二&#xff0c;应用 一&#xff0c;介绍及元件工作原理 1.元件介绍 2.存储器 3.地址总线和数据总线 地址总线只能一次选中一行 4.引脚及应用…

python之自动化(django)

1、安装 我用的是pip install Django 在命令行中安装 然后django-admin startproject autotext&#xff08;在命令行中&#xff09; 这句话是创建一个django 项目 然后切换到你所创建项目的目录下 输入&#xff1a; python manage.py runserver 当你出现以下错误时 You…

[沉淀之华] 自研基于SpringBoot Mybaits 构建低代码数据治理脚手架分享:涵盖数据同步、数据比对、数据归档、数据恢复为一体

文章目录 成果演示背景整体能力功能描述相关细节安装使用 成果演示 Github地址&#xff1a;数据治理脚手架 wiki&#xff1a;kg-ctl-core使用文档 背景 为什么要做这个&#xff1f; 一个老生常谈且不得不谈问题&#xff1a;随着业务日益发展&#xff0c;如果不做数据迁移&…

【大模型系列】问答理解定位(Qwen-VL/Llama2/GPT)

文章目录 1 Qwen-VL(2023, Alibaba)1.1 网络结构1.2 模型训练 2 Llama2(2023, Meta)2.1 网络结构2.1.1 MHA/GQA/MQA2.1.2 RoPE(Rotary Position Embedding, 旋转式位置编码)2.1.3 RMSNorm 2.2 推理2.2.1 集束搜索(beam search)2.2.2 RoPE外推 3 GPT系列(OpenAI) 1 Qwen-VL(2023…

深度强化学习(六)(改进价值学习)

深度强化学习(六)(改进价值学习) 一.经验回放 把智能体与环境交互的记录(即经验)储存到 一个数组里&#xff0c;事后反复利用这些经验训练智能体。这个数组被称为经验回放数组&#xff08;replay buffer&#xff09;。 具体来说, 把智能体的轨迹划分成 ( s t , a t , r t ,…

软件架构设计 C/S与B/S架构的区别

一、什么是C/S架构&#xff1f; C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机&#xff0c;并采用大型数据库系统&#xff0c;如Oracle或SQLServer。 C/S架构软件有一个特点&#xff0c;就是如果用户要使用的话&#xff0c;需要下载一个客户端&#x…

【Linux系列】计算机系统中的架构与发行版:理解与区分

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

m3u8,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - m3u8。 Github地址&#xff1a;https://github.com/globocom/m3u8 在网络视频传输中&#xff0c;HLS&#xff08;HTTP Live Streaming&#xff09;是一…

unity内存优化之AB包篇(微信小游戏)

1.搭建资源服务器使用(HFS软件(https://www.pianshen.com/article/54621708008/)) using System.Collections; using System.Collections.Generic; using UnityEngine;using System;public class Singleton<T> where T : class, new() {private static readonly Lazy<…

Java项目:58 ssm012医院住院管理系统+vue

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员&#xff1b;首页、个人中心、医护人员管理、科室管理、病人管理、病房管理、病人信息管理、病历管理、医嘱管理、手术安排管理、药品信…

(一)、机器人时间同步方案分析

1、是否有必要进行时间同步 目前的自动驾驶系统包括 感知、定位、决策规划、控制 等模块&#xff0c;这些模块的正常运行需要依靠各种不同类型的传感器数据的准确 融合。尤其是激光雷达与相机这两种传感器在感、知定位模块中起着至关重要的作用。机械式旋转扫描激光雷达本身较低…

(二)移植FreeRTOS到STM32中

一、概念 &#xff08;1&#xff09;任务&#xff08;线程&#xff09;&#xff1a;根据功能的不同&#xff0c;将一个系统分割成一个个独立且无法返回的函数&#xff0c;这个函数就被称为任务 &#xff08;2&#xff09;任务栈&#xff1a;静态创建的任务保存在栈中 &#xf…

LeetCode2. 两数相加(Java)

题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这…

USB打印机改网络打印机

解决传统SMB缺陷可跨平台设备使用。 1、安装deepin 如何安装 – 深度科技社区 2、配置IP地址 vi /etc/network/interfaces && systemctl restart networking 3、安装程序上传到服务器并解压。运行0Dinstalld目录下文件 sh 0Dinstalld/0installdd.sh http://XX.XX.XX…