• 实现自己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)
  • 相关阅读:
    Ubuntu16.04安装openldap和phpldapadmin
    Java 8 中的抽象类和接口到底有啥区别?
    Redis 开发陷阱及避坑指南!
    Java 中的 6 颗语法糖
    Java 8 有多牛逼?打破一切你对接口的认知!
    Git操作常用的命令都在这里了。
    Github 太狠了,居然把 "master" 干掉了!
    微服务业务日志收集方案,写得非常好!
    Maven基本介绍与安装
    IntelliJ IDEA 调试 Java 8 Stream,实在太香了!
  • 原文地址:https://www.cnblogs.com/he-qing-qing/p/10989351.html
Copyright © 2020-2023  润新知