在日常的Python开发中,我们经常会遇到需要将数据保存到文件、通过网络传输数据,或者从存储中恢复数据的需求。这时,Python序列化和Python反序列化就显得尤为重要。本文将带你从零开始,深入浅出地理解这两个概念,并通过实际代码示例掌握如何使用pickle模块和JSON序列化来处理各种数据。
简单来说:
pickle 是Python内置的标准库,专门用于对Python对象进行二进制序列化。它支持几乎所有Python数据类型(如列表、字典、类实例等)。
import pickle# 要序列化的数据data = { 'name': '小明', 'age': 25, 'skills': ['Python', '数据分析']}# 方法1:写入文件(使用 dump)with open('data.pkl', 'wb') as f: pickle.dump(data, f)# 方法2:转为字节字符串(使用 dumps)serialized_data = pickle.dumps(data)print(serialized_data) # 输出的是二进制字节 import pickle# 从文件读取并反序列化with open('data.pkl', 'rb') as f: restored_data = pickle.load(f) print(restored_data)# 从字节字符串反序列化original_data = pickle.loads(serialized_data)print(original_data) ⚠️ 注意:pickle 仅适用于Python环境,且存在安全风险——不要反序列化不可信的数据!
JSON(JavaScript Object Notation)是一种轻量级、语言无关的数据交换格式,广泛用于Web开发和API通信。Python通过内置的 json 模块支持JSON序列化。
import jsondata = { 'name': '小明', 'age': 25, 'skills': ['Python', '数据分析']}# 写入JSON文件with open('data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4)# 转为JSON字符串json_str = json.dumps(data, ensure_ascii=False, indent=2)print(json_str) import json# 从文件读取with open('data.json', 'r', encoding='utf-8') as f: restored = json.load(f) print(restored)# 从字符串解析original = json.loads(json_str)print(original) | 特性 | pickle | JSON |
|---|---|---|
| 支持的数据类型 | 几乎所有Python对象(包括自定义类) | 基本类型(dict, list, str, int, float, bool, None) |
| 跨语言兼容性 | 仅限Python | 几乎所有编程语言都支持 |
| 安全性 | 不安全(可执行任意代码) | 安全(纯数据格式) |
| 输出格式 | 二进制 | 文本(可读性强) |
通过本教程,你已经掌握了 Python序列化 和 Python反序列化 的核心概念,并学会了如何使用 pickle模块 和 JSON序列化 来处理数据。记住:
pickleJSON希望这篇教程能帮助你轻松上手序列化操作!如有疑问,欢迎在评论区交流。
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126169.html