Python基础使用json和pickle一
在 Python 中,序列化和反序列化是用于将数据转换为可存储或传输的格式以及将其还原回原始数据的过程。这种操作可以用于数据持久化、数据交换、进程间通信等场景。Python 提供了多种方式进行序列化和反序列化。
以下是 Python 中常用的序列化和反序列化方法:
- pickle 模块:pickle 是 Python 标准库中的模块,用于对象的序列化和反序列化。它可以将几乎所有的 Python 对象转换为字节流,并支持将字节流反序列化为原始对象。
- json 模块:json 是 Python 标准库中的模块,用于处理 JSON(JavaScript Object Notation)数据的编码和解码。它提供了将 Python 对象转换为 JSON 字符串以及将 JSON 字符串转换为 Python 对象的功能。
- yaml 模块:yaml 是一个用于处理 YAML(YAML Ain't Markup Language)格式的模块。YAML 是一种人类可读的数据序列化格式,非常适合用于配置文件和数据交换。yaml 模块提供了将 Python 对象转换为 YAML 字符串以及将 YAML 字符串转换为 Python 对象的功能。
- 自定义序列化和反序列化:如果你需要自定义序列化和反序列化的行为,可以通过实现对象的 getstate() 和 setstate() 方法来自定义对象的序列化和反序列化过程。这样可以控制序列化和反序列化时保存和恢复对象的状态。
-
class Person:
-
def __init__(self, name, age):
-
self.name = name
-
self.age = age
-
-
def __getstate__(self):
-
# 定义对象的序列化状态
-
return {"name": self.name}
-
-
def __setstate__(self, state):
-
# 定义对象的反序列化过程
-
self.name = state["name"]
-
self.age = 0 # 恢复默认值
-
-
person = Person("John", 30)
-
-
# 序列化对象
-
pickle_data = pickle.dumps(person)
-
-
# 反序列化对象
-
unpickled_person = pickle.loads(pickle_data)
-
-
print(unpickled_person.name) # Output: John
-
print(unpickled_person.age) # Output: 0
下面我们详细说下json模块:
在 Python 中,json 模块用于处理 JSON(JavaScript Object Notation)数据的编码和解码操作。JSON 是一种常用的数据交换格式,它以简洁的文本形式表示结构化数据。json 模块提供了一些函数来处理 JSON 数据,包括编码(将 Python 对象转换为 JSON 字符串)和解码(将 JSON 字符串转换为 Python 对象)操作。
下面介绍 json 模块中的一些常用函数和用法:
- json.dumps(obj):将 Python 对象编码为 JSON 字符串。可以通过指定一些选项来控制编码过程,例如使用 indent 参数来指定缩进级别,使生成的 JSON 字符串具有更好的可读性。
-
import json
-
-
data = {
-
"name": "John",
-
"age": 30,
-
"city": "New York"
-
}
-
-
json_str = json.dumps(data, indent=4)
-
print(json_str)
- json.loads(json_str):将 JSON 字符串解码为 Python 对象。它会将 JSON 字符串解析成相应的 Python 字典、列表等数据结构。
-
import json
-
-
json_str = '{"name": "John", "age": 30, "city": "New York"}'
-
-
data = json.loads(json_str)
-
print(data)
-
print(data["name"])
3.json.dump(obj, file):将 Python 对象编码为 JSON 字符串,并将其写入文件对象中。可以用于将 JSON 数据保存到文件中。
-
import json
-
-
data = {
-
"name": "John",
-
"age": 30,
-
"city": "New York"
-
}
-
-
with open("data.json", "w") as file:
-
json.dump(data, file)
- json.load(file):从文件中读取 JSON 字符串,并将其解码为 Python 对象。
-
import json
-
-
with open("data.json", "r") as file:
-
data = json.load(file)
-
-
print(data)
-
print(data["name"])
如果需要将对象保存到文件中,则可以:
-
import json
-
-
# 定义一个 Python 对象
-
data = {
-
"name": "John",
-
"age": 30,
-
"city": "New York"
-
}
-
-
# 保存为 JSON 文件
-
with open("data.json", "w") as file:
-
json.dump(data, file)
-
-
# 从 JSON 文件中读取并解码为 Python 对象
-
with open("data.json", "r") as file:
-
data = json.load(file)
-
-
print(data["name"]) # Output: John
-
print(data["age"]) # Output: 30
-
print(data["city"]) # Output: New York
以上是 json 模块的一些常用函数和用法。它提供了方便的方法来处理 JSON 数据,使得在 Python 中进行 JSON 数据的编码和解码变得简单易用。无论是与其他系统交换数据还是进行配置文件的读写,json 模块都是处理 JSON 数据的首选工具。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbgkbc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01