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)
  • 相关阅读:
    不会全排列算法(Javascript实现),我教你呀!
    驰骋页面,谁主沉浮-也谈清除浮动
    你不知道的parseInt
    Javascript函数重载,存在呢—还是存在呢?
    在这个看脸的世界,该如何优雅的创建JS对象
    Python 函数的使用小结
    Python 集合(set)的使用总结
    Python 文件操作
    python 中字典的操作(增、删、改、查)
    python 中list的操作(循环、切片、增、删、改、查、反转、排序)
  • 原文地址:https://www.cnblogs.com/he-qing-qing/p/10989351.html
Copyright © 2011-2022 走看看