文件内容格式有:
192.168.1.0/24192.168.2.1-192.168.2.254192.168.3.1~192.168.3.100192.168.4.1-254192.168.5.100【Python】IP地址解析并生成,casio tr100
0evadmin
编程语言
2
文件名:【Python】IP地址解析并生成,casio tr100
【Python】IP地址解析并生成
IP地址解析并生成 #!python3# coding=utf-8import loggingimport ipaddresslogging.basicConfig(level=logging.INFO,format='%(asctime)s [%(filename)s:%(lineno)d] %(levelname)s # %(message)s',datefmt='%Y-%m-%d %M:%S')def parse_ipaddress_user(addrs, flag):addr_fields = str.split(addrs, flag)if len(addr_fields) != 2:return None, Nonetry:start = ipaddress.ip_address(addr_fields[0])except Exception:logging.error("addr err: %s" % addrs)return None, Nonetry:end = ipaddress.ip_address(addr_fields[1])except Exception:try:end_tmp = int(addr_fields[1])except Exception:logging.error("add err: %s", addrs)return None, Nonetmp_fields = str.split(addr_fields[0], ".")if len(tmp_fields) != 4:logging.error("add err: %s", addrs)return None, Noneend_str = f"{tmp_fields[0]}.{tmp_fields[1]}.{tmp_fields[2]}.{end_tmp}"try:end = ipaddress.ip_address(end_str)except Exception:logging.error("add err: %s", addrs)return None, Nonereturn start, enddef parse_ipaddress(addrs):if "-" in addrs:start, end = parse_ipaddress_user(addrs, "-")if start is None or end is None:yield Noneelse:while start <= end:yield startstart += 1elif "~" in addrs:start, end = parse_ipaddress_user(addrs, "~")if start is None or end is None:yield Noneelse:while start <= end:yield startstart += 1elif "/" in addrs:try:base_net_addr = ipaddress.ip_network(addrs)except Exception:logging.error("add err: %s", addrs)yield Noneelse:base_addr = base_net_addr.network_address + 1index = 0while True:ipvx_addr = base_addr + indexindex += 1if ipvx_addr >= base_net_addr.broadcast_address:breakyield ipvx_addrelse:yield addrsif __name__ == "__main__":with open("ipaddr", 'r', encoding='utf-8') as fd:for check_someone in fd:check_someone = check_someone.strip()if check_someone == "":continuegen_addr_obj = parse_ipaddress(check_someone)for gen_addr in gen_addr_obj:print(gen_addr)
同类推荐
-

【PyTorch】 暂退法(dropout),gtx970
查看 -

【Python CheckiO 题解】Roman Numerals,thl美猴王怎么样
查看 -

【Python matplotlib】鼠标右键移动画布,联想y460报价
查看 -

【Python 学习_第2周_程序代码】金角大王培训第二周练习_购物车代码,将写的代码和老师代码比较,记录下收获...,nerovision
查看 -
![【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环,phiaton](https://wap.0ev.cc/zb_users/cache/thumbs/23e6181118b51d9a0b36fcaeaa9a7ece-80-80-1.jpg)
【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环,phiaton
查看 -

【Python 标准库学习】数据科学计算库 — math,wps office 2009
查看 -

【Python 标准库学习】时间相关的函数库 — time,三星w299
查看 -

【Python-第三方库-pywin32】随笔-基础,pp点点通注册(pp点点通怎么注册)
查看 -

【PythonGIS】基于Python面矢量转换线矢量,堆栈式cmos
查看
控制面板
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接