• Python基础知识之json&pickle模块


    json & pickle模块

    1. json模块:只适用于简单的数据类型,是一种跨平台的模块。

      假设我们有了一段数据是这样定义的:

      info = {
          'name':'alex',
          'age':22
      }
      

      对于这种简单的数据类型,我们可以直接使用Json来进行数据的序列化和反序列化:

      • 序列化dumps

        import json
        f = open("test.text","wb")
        f.write(json.dumps(info))
        f.close()
        

        同样的,我们可以使用dump方法来代替dumps方法:
        只需要将 f.write(json.dumps(info))
        替换成json.dump(info,f)就可以了。

      • 反序列化loads

        import json
        f = open("test.txt","rb")
        data = json.loads(f.read())
        
        

        同样的,我们可以使用load方法来代替loads方法:
        只需要将 f.write(json.dumps(info))
        替换成json.dump(info,f)就可以了。

    2. pickle模块:能够转换传递复杂的数据类型,是Python特有的一种数据类型。

      通过上面的json模块我们发现,json只能传递一些简单的数据类型,如果我们想给info添加一个函数呢?

      def sayhi(name):
          print("hello2,",name)
      
      
      info = {
      'name':'alex',
      'age':22
      'func':sayhi
          }
      

      这个时候,就需要使用我们的pickle模块了。

      • 序列化dumps
        import pickle
        f = open("test.text","wb")
        f.write(json.pickle(info))
        f.close()
        
        同样的,我们可以使用dump方法来代替dumps方法:
        只需要将 f.write(pickle.dumps(info))
        替换成pickle.dump(info,f)就可以了。
      • 反序列化loads
        import pickle
        def sayhi(name):
            print("hi"+name)
        
        f = open("test.txt","rb")
        data = pickle.loads(f.read())
        
        
        同样的,我们可以使用load方法来代替loads方法:
        只需要将 f.write(picklejson.dumps(info))
        替换成pickle.dump(info,f)就可以了。

        需要注意的是,在反序列话的时候,需要先重新定义sayhi()函数。

    3. 注意事项:

      在使用json模块和pickle模块序列化和反序列化数据的时候采取的是一dump一load的原则,即只dump一份同时也只load一份。

  • 相关阅读:
    SQl 事物+视图+游标+索引+锁
    常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》
    SQL--存储过程+触发器 对比!
    SQL---触发器
    SQL (一)定义变量以及变量赋值
    Js 事件大全
    ASP.NET 常用内置对象详解-----Response
    母板页----路径问题
    构建低代码开发生态,APICloud全面进入3.0时代
    APICloud:云端服务开发的硬核要素
  • 原文地址:https://www.cnblogs.com/bearkchan/p/8046572.html
Copyright © 2020-2023  润新知