在Python编程中,我们经常需要将程序运行中的数据保存到硬盘上,以便下次启动程序时可以继续使用。这个过程就叫做数据持久化。本文将带你从零开始,了解并掌握Python中最常用的几种数据结构持久化方法,即使是编程新手也能轻松上手!
数据持久化是指将内存中的数据保存到硬盘或其他非易失性存储介质中,使得程序关闭后数据不会丢失。当你再次运行程序时,可以从硬盘中读取这些数据,恢复程序状态。
pickle 是Python内置的序列化模块,可以将几乎任何Python对象(如列表、字典、自定义类等)转换为字节流并保存到文件中。
import pickle# 要保存的数据data = { 'name': '小明', 'age': 25, 'hobbies': ['读书', '编程', '旅行']}# 将数据写入文件with open('data.pkl', 'wb') as f: pickle.dump(data, f)print("数据已成功保存!") import pickle# 从文件读取数据with open('data.pkl', 'rb') as f: loaded_data = pickle.load(f)print(loaded_data)# 输出: {'name': '小明', 'age': 25, 'hobbies': ['读书', '编程', '旅行']} 注意:pickle 是Python特有的格式,不适用于与其他语言交互。如果你需要跨语言兼容,请看下面的JSON方法。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,几乎所有编程语言都支持。Python通过 json 模块提供对JSON的支持。
import json# 原始数据(必须是基本类型:dict, list, str, int, float, bool, None)data = { "name": "小红", "score": 95.5, "passed": True}# 保存为JSON文件with open('data.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4)# 读取JSON文件with open('data.json', 'r', encoding='utf-8') as f: loaded = json.load(f)print(loaded) JSON的优点是可读性强、跨平台,但不能保存自定义类对象(除非手动转换)。
shelve 模块提供了一个类似字典的接口,底层其实使用了 pickle,但它允许你像操作普通字典一样存取数据,并自动保存到磁盘。
import shelve# 打开一个shelf文件(会生成data.db等文件)with shelve.open('mydata') as shelf: shelf['user1'] = {'name': '张三', 'age': 30} shelf['user2'] = {'name': '李四', 'age': 28}# 读取数据with shelve.open('mydata') as shelf: print(shelf['user1']) # 输出: {'name': '张三', 'age': 30} 这种方式非常适合需要频繁读写多个键值对的场景,比如配置管理或小型数据库替代方案。
如果数据非常简单(比如只是一串数字或字符串),也可以直接用 open() 写入文本文件。
# 保存numbers = [1, 2, 3, 4, 5]with open('numbers.txt', 'w') as f: f.write(','.join(map(str, numbers)))# 读取with open('numbers.txt', 'r') as f: content = f.read() loaded_numbers = [int(x) for x in content.split(',')]print(loaded_numbers) # [1, 2, 3, 4, 5] 掌握 Python数据持久化 技术,能让你的程序具备“记忆”能力。无论是使用 pickle、json、shelve 还是普通文件,关键在于根据实际需求选择最合适的方法。希望这篇教程能帮助你轻松入门数据持久化,写出更强大的Python程序!
记住这四个核心关键词:Python数据持久化、Python pickle模块、Python shelve模块、Python JSON序列化,它们是你进阶Python开发的重要基石。
本文由主机测评网于2025-12-18发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129362.html