纪念一下,第一份python代码

来源:互联网 发布:隐藏js代码 编辑:程序博客网 时间:2024/06/06 12:00
工作需要,学了2天python
#! /bin/env python2# coding: utf-8'netnode_list序列化json模块'import jsonfrom topology import NetNodeOUTPUT_JSON_FILE = '../data/topology.json'class NetNodeListEncoder(json.JSONEncoder):    """拓扑列表序列化json类    """    def default(self, obj):        """转化方法        """        if not isinstance(obj,WrapNetNodeListEncoder):            raise ValueError('NetNodeListEncoder::param type err!')        return self._recurse(obj.net_node_list)    def _recurse(self, list=[]):        """递归转化        """        l = []        if list:            for net_node in list:                d = net_node.__dict__                if net_node.sub_net:                    d['sub_net'] = self._recurse(net_node.sub_net)                else:                    del(d['sub_net'])                l.append(d)        return lclass WrapNetNodeListEncoder(object):    """封装jsonencoder    exp:        encoder = WrapNetNodeListEncoder(netnode_list)        encoder.encode() # 转码        encoder.write_json() # 写json文件    """    def __init__(self,list=[]):        self.net_node_list = list;        self.json_str = ''    def encode(self):        """调用NetNodeListEncoder的encode        """        self.json_str = NetNodeListEncoder().encode(self)        return self.json_str    def write_json(self):        """写json文件        """        if self.json_str.strip():            with  open(OUTPUT_JSON_FILE, 'wt',  encoding='utf-8') as fd:                fd.write(self.json_str)        else:            print("WrapNetNodeListEncoder::write_json json_str is empty!")

0 0