实现自己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:')


转载于:https://www.cnblogs.com/he-qing-qing/p/10989351.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值