• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python基础使用json和pickle一

武飞扬头像
千锋教育官方
帮助1

在 Python 中,序列化和反序列化是用于将数据转换为可存储或传输的格式以及将其还原回原始数据的过程。这种操作可以用于数据持久化、数据交换、进程间通信等场景。Python 提供了多种方式进行序列化和反序列化。
以下是 Python 中常用的序列化和反序列化方法:

  1. pickle 模块:pickle 是 Python 标准库中的模块,用于对象的序列化和反序列化。它可以将几乎所有的 Python 对象转换为字节流,并支持将字节流反序列化为原始对象。
  2. json 模块:json 是 Python 标准库中的模块,用于处理 JSON(JavaScript Object Notation)数据的编码和解码。它提供了将 Python 对象转换为 JSON 字符串以及将 JSON 字符串转换为 Python 对象的功能。
  3. yaml 模块:yaml 是一个用于处理 YAML(YAML Ain't Markup Language)格式的模块。YAML 是一种人类可读的数据序列化格式,非常适合用于配置文件和数据交换。yaml 模块提供了将 Python 对象转换为 YAML 字符串以及将 YAML 字符串转换为 Python 对象的功能。
  4. 自定义序列化和反序列化:如果你需要自定义序列化和反序列化的行为,可以通过实现对象的 getstate() 和 setstate() 方法来自定义对象的序列化和反序列化过程。这样可以控制序列化和反序列化时保存和恢复对象的状态。
  1.  
    class Person:
  2.  
    def __init__(self, name, age):
  3.  
    self.name = name
  4.  
    self.age = age
  5.  
     
  6.  
    def __getstate__(self):
  7.  
    # 定义对象的序列化状态
  8.  
    return {"name": self.name}
  9.  
     
  10.  
    def __setstate__(self, state):
  11.  
    # 定义对象的反序列化过程
  12.  
    self.name = state["name"]
  13.  
    self.age = 0 # 恢复默认值
  14.  
     
  15.  
    person = Person("John", 30)
  16.  
     
  17.  
    # 序列化对象
  18.  
    pickle_data = pickle.dumps(person)
  19.  
     
  20.  
    # 反序列化对象
  21.  
    unpickled_person = pickle.loads(pickle_data)
  22.  
     
  23.  
    print(unpickled_person.name) # Output: John
  24.  
    print(unpickled_person.age) # Output: 0
学新通

下面我们详细说下json模块:
在 Python 中,json 模块用于处理 JSON(JavaScript Object Notation)数据的编码和解码操作。JSON 是一种常用的数据交换格式,它以简洁的文本形式表示结构化数据。json 模块提供了一些函数来处理 JSON 数据,包括编码(将 Python 对象转换为 JSON 字符串)和解码(将 JSON 字符串转换为 Python 对象)操作。

下面介绍 json 模块中的一些常用函数和用法:

  1. json.dumps(obj):将 Python 对象编码为 JSON 字符串。可以通过指定一些选项来控制编码过程,例如使用 indent 参数来指定缩进级别,使生成的 JSON 字符串具有更好的可读性。
  1.  
    import json
  2.  
     
  3.  
    data = {
  4.  
    "name": "John",
  5.  
    "age": 30,
  6.  
    "city": "New York"
  7.  
    }
  8.  
     
  9.  
    json_str = json.dumps(data, indent=4)
  10.  
    print(json_str)
  1. json.loads(json_str):将 JSON 字符串解码为 Python 对象。它会将 JSON 字符串解析成相应的 Python 字典、列表等数据结构。
  1.  
    import json
  2.  
     
  3.  
    json_str = '{"name": "John", "age": 30, "city": "New York"}'
  4.  
     
  5.  
    data = json.loads(json_str)
  6.  
    print(data)
  7.  
    print(data["name"])

3.json.dump(obj, file):将 Python 对象编码为 JSON 字符串,并将其写入文件对象中。可以用于将 JSON 数据保存到文件中。

  1.  
    import json
  2.  
     
  3.  
    data = {
  4.  
    "name": "John",
  5.  
    "age": 30,
  6.  
    "city": "New York"
  7.  
    }
  8.  
     
  9.  
    with open("data.json", "w") as file:
  10.  
    json.dump(data, file)
  1. json.load(file):从文件中读取 JSON 字符串,并将其解码为 Python 对象。
  1.  
    import json
  2.  
     
  3.  
    with open("data.json", "r") as file:
  4.  
    data = json.load(file)
  5.  
     
  6.  
    print(data)
  7.  
    print(data["name"])

如果需要将对象保存到文件中,则可以:

  1.  
    import json
  2.  
     
  3.  
    # 定义一个 Python 对象
  4.  
    data = {
  5.  
    "name": "John",
  6.  
    "age": 30,
  7.  
    "city": "New York"
  8.  
    }
  9.  
     
  10.  
    # 保存为 JSON 文件
  11.  
    with open("data.json", "w") as file:
  12.  
    json.dump(data, file)
  13.  
     
  14.  
    # 从 JSON 文件中读取并解码为 Python 对象
  15.  
    with open("data.json", "r") as file:
  16.  
    data = json.load(file)
  17.  
     
  18.  
    print(data["name"]) # Output: John
  19.  
    print(data["age"]) # Output: 30
  20.  
    print(data["city"]) # Output: New York
学新通

以上是 json 模块的一些常用函数和用法。它提供了方便的方法来处理 JSON 数据,使得在 Python 中进行 JSON 数据的编码和解码变得简单易用。无论是与其他系统交换数据还是进行配置文件的读写,json 模块都是处理 JSON 数据的首选工具。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbgkbc
系列文章
更多 icon
同类精品
更多 icon
继续加载