zoukankan      html  css  js  c++  java
  • 实现自己mypickle 和 myjson类 并通过反射,实现接口统一

    自定义mypickle和myjson类,并通过反射统一接口

    # 自己的Myjson
    class Myjson(object):

       def__init__(self, file):
           self.file= file
           self.obj= Myjson.generator(self.file)

       def dump(self, obj):
           withopen(self.file, mode='at', encoding='utf-8') asf:
               json.dump(obj, f)
               f.write(' ')
           self.obj= Myjson.generator(self.file)

       @staticmethod
       def generator(file):
           withopen(file, encoding='utf-8', mode='r') asf:
               forlineinf:
                   yieldjson.loads(line.strip())

       # 返回一个迭代器的实现方式
       def load(self):
           returnself.obj

       # 这个实现方式 一次load给一次数据
       # def load(self):
       #     try:
       #         return next(self.obj)
       #     except StopIteration:
       #         pass
       #         # print('文件没有数据了')


    # 写一个自己的pickle 类
    class Mypickle(object):
       def__init__(self, path):
           self.file= path
           self.obj= self.generator(self.file)

       def dump(self, object):
           withopen(self.file, 'ab') asf:
               pickle.dump(object, f)
           self.obj= self.generator(self.file)

       @staticmethod
       def generator(file):
           withopen(file, 'rb') asf:
               while1:
                   try:
                       yieldpickle.load(f)
                   exceptEOFError:
                       break

       def load(self):
           returnself.obj


    # str是Myjson或Mypickle
    def dump(str, obj, path):
           try:
               cls= getattr(sys.modules['__main__'], str)
               cls(path).dump(obj)   # Myjson只支持str,bool,null,nums,dic,list6种数据类型
           except:
               print('str must be one of json and pickle:')


    # str是Myjson或Mypickle
    def load(Cls, path):
           try:
               cls= getattr(sys.modules['__main__'], Cls)
               returncls(path).load()   # Myjson只支持str,bool,null,nums,dic,list6种数据类型
           except:
               print('str must be one of json and pickle:')


    # dump('Myjson', [1, 2], 'test_txt')
    # for db in load('Myjson', 'test_txt'):
    #     print(db)

    # dump('Myjson', [1, 2], 'test_txt_mypickle')
    # for db in load('Myjson', 'test_txt_mypickle'):
    #     print(db)
  • 相关阅读:
    原创:ESXi5.1安装实验1
    Xeon 5000系列说起
    ESXi5.1安装实验3
    VMware虚拟化网络和存储功能简介
    Understanding Core Exchange Server 2007 Design Plans
    Exchange 2007和2003,2000等共存。
    自动发现服务深入理解
    管理 POP3 和 IMAP4 服务
    原创:vsphere client 5.1安装实战
    UPNP解读2含netbios,wins,DNS
  • 原文地址:https://www.cnblogs.com/he-qing-qing/p/10989351.html
Copyright © 2011-2022 走看看