实现自己mypickle 和 myjson类 并通过反射,实现接口统一

Posted he-qing-qing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现自己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(‘\n‘)
       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)

以上是关于实现自己mypickle 和 myjson类 并通过反射,实现接口统一的主要内容,如果未能解决你的问题,请参考以下文章

javascript NodeJS模块,用于通过myjson.com存储(公共)JSON

刚从相机拍摄并通过从图库中挑选显示的Android裁剪图像

OpenGL 性能问题

在 Android 中从 sqlite 创建 Json

在没有服务器的情况下加载 JSON 文件

JS Fetch