纪念一下,第一份python代码

工作需要,学了2天python
#! /bin/env python2
# coding: utf-8

'netnode_list序列化json模块'

import json
from topology import NetNode

OUTPUT_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 l
class 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!")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值