實現本身mypickle 和 myjson類 並經過反射,實現接口統一

自定義mypickle和myjson類,並經過反射統一接口json

# 本身的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)
相關文章
相關標籤/搜索