使用python解析mib文件,生成json文件提高可读性

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 使用python解析mib文件,生成json文件提高可读性

使用python解析mib文件

只需要替换文件地址和生成文件路径,

#coding=utf-8

import re
import json

def getMib():
    trap_types=['OBJECT IDENTIFIER','OBJECT-TYPE','NOTIFICATION-TYPE','TRAP-TYPE']  #要获取的trap_type的类型
    f = open('HW-IMAPV1NORTHBOUND-TRAP-MIB.mib','r',encoding='utf-8')

    find_flag =False                #查找 DESCRIPTION 和 VALUE标记
    record_flag=False                 #记录 description标记
    description_line = []
    description = ''
    name = ''
    result = {}

    enterprises='1.3.6.1.4.1'       #每个mib文件可能引用了别的mib文件的对象 需要寻找初始值并添加
    management='1.3.6.1.4.1.2011.2.15.1'
    trap_name_value = {}
    trap_name_value['enterprises'] = enterprises
    trap_name_value['management'] = management

    for line in f :            #按行读入文件,此时line的type是str
        if '--' in line:        #过滤注释行
            continue
        if record_flag==False:

            for trap_type in trap_types:
                if trap_type in line:     #检验是否到了要写入的内容
                    #print('LINE:', line)
                    find_flag=True  #开启查找 DESCRIPTION 和 VALUE
                    name=line.split(trap_type)[0].strip()   #取 trap_type 前面的内容作为trap_name
                    #print('NAME:',line.split(key)[0].strip())
                    break

        if(find_flag):


            if 'DESCRIPTION' in line:
                record_flag=True  #开启记录 description
            if '::=' in line:
                #print('LINE:', line)
                value=line.split('::=')[1].strip()
                #print('name:',name)
                #print('description:',description)
                #print('value:',get_str_btw(value,'{','}').strip())
                trap_value=get_str_btw(value,'{','}').strip()
                #print('VALUE:',line.split('::=')[1].strip())

                if check_is_has_char(trap_value):
                    key=trap_value.split(' ')[0]
                    trap_value=trap_name_value[key]+'.'+trap_value.split(' ')[1]
                trap_name_value[name] = trap_value
                if trap_value not in result:
                    result[trap_value]={}
                result[trap_value]['name']= name
                result[trap_value]['desc'] = description
                find_flag=False#关闭查找 DESCRIPTION 和 VALUE
                record_flag=False#停止记录 description
                description_line.clear()
                continue
            if(record_flag):
                #print('LINE:', line)
                K = list(line.strip())
                if len(K) > 1:  # 去除文本中的空行
                    for i in K:  # 写入需要内容
                        description_line.append(i)

                strlist = ''.join(description_line)  # 合并列表元素
                newlines = str(strlist).lstrip('DESCRIPTION')
                description = newlines
                #print('DESCRIPTION:',newlines)
    return result
def get_str_btw(s, f, b):
    '''提取字符串s中,字符串f和b的中间部分'''
    if(s.find(f)>=0):
        par = s.partition(f)
        return (par[2].partition(b))[0][:]
    else:
        return s

def check_is_has_char(str):
    '''查找是否含有字母'''
    my_re = re.compile(r'[A-Za-z]',re.S)
    res = re.findall(my_re,str)
    if len(res):
        return True
    else:
        return False

result = getMib()
print(getMib())
j = json.dumps(result)
reFile = open('mib.json','w')
reFile.write(str(j))
#print(getMib())
相关文章
|
2天前
|
XML JSON JavaScript
R JSON 文件
JSON: JavaScript Object Notation(JavaScript 对象表示法)。
40 29
|
9天前
|
设计模式 缓存 开发者
Python中的装饰器:简化代码,提高可读性
【9月更文挑战第10天】在Python编程的世界中,装饰器是一种强大的工具,它允许开发者在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和生动的例子,带你了解装饰器的概念、使用方法及其在实际开发中的应用价值。我们将一起探索如何利用装饰器来简化代码结构,提升代码的可读性和可维护性,让你的编程之旅更加顺畅。
|
6天前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
28 9
|
2天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
17 3
|
6天前
|
JSON 前端开发 JavaScript
JSON文件如何读取?
JSON文件如何读取?
20 5
|
10天前
|
Java 数据安全/隐私保护 Python
Python案例分享:如何实现文件的解压缩
Python案例分享:如何实现文件的解压缩
35 8
|
9天前
|
机器学习/深度学习 人工智能 TensorFlow
深入骨髓的解析:Python中神经网络如何学会‘思考’,解锁AI新纪元
【9月更文挑战第11天】随着科技的发展,人工智能(AI)成为推动社会进步的关键力量,而神经网络作为AI的核心,正以其强大的学习和模式识别能力开启AI新纪元。本文将探讨Python中神经网络的工作原理,并通过示例代码展示其“思考”过程。神经网络模仿生物神经系统,通过加权连接传递信息并优化输出。Python凭借其丰富的科学计算库如TensorFlow和PyTorch,成为神经网络研究的首选语言。
12 1
|
2天前
|
数据挖掘 Python
🚀告别繁琐!Python I/O管理实战,文件读写效率飙升的秘密
在日常编程中,高效的文件I/O管理对提升程序性能至关重要。Python通过内置的`open`函数及丰富的库简化了文件读写操作。本文从基本的文件读写入手,介绍了使用`with`语句自动管理文件、批量读写以减少I/O次数、调整缓冲区大小、选择合适编码格式以及利用第三方库(如pandas和numpy)等技巧,帮助你显著提升文件处理效率,让编程工作更加高效便捷。
12 0
|
2天前
|
存储 数据挖掘 测试技术
Python接口自动化中操作Excel文件的技术方法
通过上述方法和库,Python接口自动化中的Excel操作变得既简单又高效,有助于提升自动化测试的整体质量和效率。
11 0
|
3天前
|
缓存 开发者 Python
探索Python中的装饰器:提升代码复用性与可读性
本文旨在深入探讨Python装饰器的概念、实现及其应用。通过实例分析,本文展示了如何利用装饰器提高代码的模块化和重用性,从而优化开发流程。我们将从装饰器的基本定义入手,逐步解析其工作机制,并通过案例展示如何在实际项目中有效利用装饰器。
8 0

热门文章

最新文章