Python基础知识之json&pickle模块

json & pickle模块

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

    假设我们有了一段数据是这样定义的:
    python 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添加一个函数呢?
    ```python
    def sayhi(name):
    print("hello2,",name)

    info = {
    'name':'alex',
    'age':22
    'func':sayhi
    }
    ```

    这个时候,就需要使用我们的pickle模块了。
    • 序列化dumps
      python 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
      ```python
      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一份。

转载于:https://www.cnblogs.com/bearkchan/p/8046572.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值