zoukankan      html  css  js  c++  java
  • Python3-json & pickle 序列化

    JSON(JavaScript Object Notation, JS对象标记)是一中轻量级的数据交换格式,大部分语言都支持

    Python3中的json提供了对json格式数据的序列化支持

      json.dump(obj, fileobj)

        将Python对象序列化成json字符串并写入到打开的文件对象中

    import json
    
    # 写入json数据
    with open("demo.txt", "w") as f:
        data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
        json.dump(data, f)
    View Code

      json.load(fileobj)

        返回读取打开的文件对象中的所有json字符串,并转成Python对象

    import json
    
    # 读取json数据(只能一次性读取全部,不能像pickle一样分次load())
    with open("demo.txt", "r") as f2:
        print(json.load(f2))
    View Code

      json.dumps(obj)  

        将Python对象转换成json字符串

      json.loads(json_str)  

        将json字符串转换成Python对象

    import json
    
    data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
    json_str = json.dumps(data)    # json格式数据编码
    print(json_str)                # 输出结果: {"one": 1, "Two": 2, "Three": 3, "Hello": "u4f60u597d"}
    
    result = json.loads(json_str)    # json格式数据解码
    print(result)                    # {'one': 1, 'Two': 2, 'Three': 3, 'Hello': '你好'}
    View Code

    Python3中的pickle提供了对几乎所有的Python对象的序列化支持

      pickle.dump(obj, fileobj)

        将Python对象序列化成pickle字节数据并写入到打开的文件对象中

      pickle.load(fileobj)

        返回读取打开的文件对象中的第n次dump()的pickle字节数据,并转成Python对象

      pickle.dumps(obj)  

        将Python对象转换成pickle字节数据

      pickle.loads(pickle_bytes)  

        将pickle字节数据转换成Python对象

    import pickle
    
    
    class User:
        username = "Jet"
    
    data = {"one": 1, "Two": 2, "Three": 3, "Hello": "你好"}
    
    # pickle数据序列化写入,几乎支持所有Python对象
    with open("pickle_data.txt", "wb") as wf:
        u = User()
        pickle.dump(u, wf)
        pickle.dump(data, wf)
    
    # pickle序列化数据读取,有几次dump()就可以load()几次
    with open("pickle_data.txt", "rb") as rf:
        print(pickle.load(rf).username)    # 输出结果: Jet
        print(pickle.load(rf))             # 输出结果: {'one': 1, 'Two': 2, 'Three': 3, 'Hello': '你好'}
    View Code

    json模块和pickle模块的区别

      1.JSON是一中文本序列化格式(它输出unicode文本,大多数时候为UTF-8),而Pickle是一个二进制的序列化格式

      2.JSON是人类可读的,而Pickle不是

      3.JSON是可互操作的,很多编程语言都支持,而pickle是特定于Python语言交互的

      4.json模块支持的Python对象只有几个,如字典、字符串、数字等,而pickle几乎全部支持

    参考资料

      http://python.usyiyi.cn/translate/python_352/library/json.html

      http://python.usyiyi.cn/translate/python_352/library/pickle.html

  • 相关阅读:
    关于MFC库和CRT库冲突的分析
    C++ Traits技术
    C/C++的参数传递机制
    C++与正态分布
    前端JavaScript
    python 前端 css
    python 前端 html
    MySQL 数据库
    网络编程 生产者消费者模型 GiL

  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6626695.html
Copyright © 2011-2022 走看看