Dict Json vs Pickle¶
2025-03-18
难度: 2
时长: 30 min
在 Python 里,你能够借助 json 和 pickle 模块把 dict 数据保存到文件里,之后再读取出来。下面为你呈现详细的入门教程。
1. 使用 json 模块保存和读取 dict 数据¶
json 模块可用于处理 JSON 数据,JSON 是一种轻量级的数据交换格式,易于阅读和编写。以下是使用 json 模块保存和读取 dict 数据的示例代码:
import json
# 定义一个字典
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# 将字典保存为 JSON 文件
file_path = 'data.json'
try:
with open(file_path, 'w') as file:
json.dump(data, file)
print(f"数据已成功保存到 {file_path}")
except Exception as e:
print(f"保存数据时出错: {e}")
# 从 JSON 文件中读取数据
try:
with open(file_path, 'r') as file:
loaded_data = json.load(file)
print("从文件中读取的数据:")
print(loaded_data)
except FileNotFoundError:
print("错误: 文件未找到!")
except Exception as e:
print(f"读取数据时出错: {e}")
代码解释¶
首先,我们定义了一个包含个人信息的字典
data。接着,使用
json.dump()函数将字典保存到data.json文件中。最后,使用
json.load()函数从data.json文件中读取数据并打印。
2. 使用 pickle 模块保存和读取 dict 数据¶
pickle 模块可以将 Python 对象序列化为二进制格式,并且可以将其反序列化为原始对象。以下是使用 pickle 模块保存和读取 dict 数据的示例代码:
import pickle
# 定义一个字典
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# 将字典保存为 pickle 文件
file_path = 'data.pickle'
try:
with open(file_path, 'wb') as file:
pickle.dump(data, file)
print(f"数据已成功保存到 {file_path}")
except Exception as e:
print(f"保存数据时出错: {e}")
# 从 pickle 文件中读取数据
try:
with open(file_path, 'rb') as file:
loaded_data = pickle.load(file)
print("从文件中读取的数据:")
print(loaded_data)
except FileNotFoundError:
print("错误: 文件未找到!")
except Exception as e:
print(f"读取数据时出错: {e}")
代码解释¶
同样,我们定义了一个包含个人信息的字典
data。然后,使用
pickle.dump()函数将字典保存到data.pickle文件中。注意,pickle文件是以二进制模式打开的。最后,使用
pickle.load()函数从data.pickle文件中读取数据并打印。
3. json 和 pickle 的对比¶
数据格式:
json是一种文本格式,易于人类阅读和编写,也易于在不同编程语言之间交换数据。pickle是一种二进制格式,只能在 Python 中使用。
数据类型支持:
json只支持基本的数据类型,如dict、list、str、int、float、bool和None。pickle可以处理任意的 Python 对象,包括自定义类的实例。
安全性:
json是安全的,因为它只包含文本数据。pickle在反序列化时可能存在安全风险,因为它可以执行任意的 Python 代码。因此,不要从不可信的来源加载pickle文件。
综上所述,如果你需要在不同编程语言之间交换数据,或者需要数据具有可读性,那么使用 json 是一个不错的选择。如果你只在 Python 中使用,并且需要处理复杂的 Python 对象,那么可以考虑使用 pickle。但要注意 pickle 的安全性问题。