第五课中处理持久化的方法还是有待商榷
第五课中我们利用nester模块中的print_lol函数对写入文本文件的列表进行了格式化,确保数据的可用性。
可如果我们需要写入其他的数据格式呢?难道要对每一种数据格式都创建一个格式化方法?
要累死程序猿吗?码农也是人啊!
Gudio还有有人情味儿的,python的标准库中有一个pickle模块可以解决这个问题!
使用pickle模块持久化数据
pickle模块可以保存各种数据类型的原始状态,我们不必再为数据写入文件前的格式化而担心了!
将第四课中的代码做如下修改:
'''使用pickle模块持久化各种数据类型的数据'''
import pickle
man = []
other = []
try:
data = open('sketch.txt')
try:
for each_line in data:
(role, line_spoken) = each_line.split(':', 1)
line_spoken = line_spoken.strip()
if role == 'man':
man.append(line_spoken)
else:
other.append(line_spoken)
except ValueError:
pass
data.close()
except IOError as ioerr:
print('File Error :' + str(ioerr))
try:
with open('man_data.txt', 'wb') as man_file, open('other_data.txt', 'wb') as other_file: #由于pickle以二进制模式存储数据,所以我们需要'wb'参数来以二进制方式操作文件
pickle.dump(man, file = man_file) #dump是pickle中的一个方法,用来写入数据
pickle.dump(other, file = other_file)
except IOError as ioerr:
print('File Error: ' + str(ioerr))
except pickle.PickleError as perr:
print('Pickling Error: ' + str(perr)) #pickle的异常
这样,我们使用pickle对处理完毕。接下来取出数据看看,是否如我们所愿。
import pickle
man_data = []
try:
with open('man_file.txt', 'rb') as fman: #用二进制方式打开文件
man_data = pickle.load(fman) #pickle中的load方法用于从文件对象中取出数据
except IOError as ioerr:
print('File Error: ' + str(ioerr))
except pickle.PickleError as perr:
print('Pickling Error: ' + str(perr))
print(man_data)
接下来我们可以看到输出到控制台的列表了!
OK~!干完,手工!
分享到:
相关推荐
3. 数据库接口:Python的`sqlite3`模块提供了一个轻量级的SQLite数据库引擎,可以直接在文件中存储数据,适合小规模应用。对于大型应用,Python还有许多第三方库如`psycopg2`(PostgreSQL)、`pyodbc`(ODBC)、`...
22. **pickle**:序列化和反序列化Python对象,用于持久化存储。 23. **shutil**:提供高级文件和目录操作,如复制、移动、删除等。 24. **hashlib**:提供多种散列算法,用于数据校验和消息摘要。 25. **logging...
第一个参数是要存储的对象,第二个参数是打开的文件对象,第三个参数是协议号(0代表ASCII协议)。可以连续dump多个对象到同一个文件。 5. 关闭文件:操作完成后,应当使用文件对象的close()方法关闭文件,确保所有...
根据给定文件内容,我们可以提炼出Python编程中使用的第三方库及其相关知识点。以下是从文档中提取的关键知识点: 1. 数据持久化和交换 - 序列化对象:可以将对象状态转换为可存储的格式(如JSON或Pickle),以实现...
"Python100Cases-master.zip"是一个包含丰富的Python实践案例的压缩包,旨在帮助学习者深入理解和掌握Python编程技能。本文将详细解析这个压缩包中的主要知识点,带你领略Python的魅力。 1. **基础语法** - 变量与...
- **数据持久化**:学习如何有效地存储和加载大量数据,例如使用`pickle`和`shelve`模块。 7. **Python标准库的优化** - **内置模块的性能**:分析Python标准库中的一些模块,如`os`, `sys`, `re`等,如何合理...
游戏的进度通常需要持久化存储,这可以利用Python的文件操作功能,如读写JSON或pickle格式的数据。当游戏结束或玩家退出时,游戏状态可以被序列化并保存到文件,下次启动游戏时再反序列化恢复。 此外,Python的模块...
6. **数据持久化**:除了文件操作,还介绍了使用pickle模块序列化和反序列化Python对象,以及使用JSON进行数据交换。 7. **Web编程**:通过Python的Flask框架介绍Web开发基础知识,包括路由、模板引擎和数据库交互...
本项目“Python-答题辅助决策自定义适配答题app”旨在利用Python技术实现一个能够根据用户需求定制的答题辅助系统。 1. **Python基础知识**: - Python语法:Python以其清晰的语法结构和易于理解的特性闻名,适用...
7. **数据序列化**:讨论了如何将Python对象转化为持久化的数据格式,如JSON、pickle和XML。 8. **并发与并行**:讲解了多线程、多进程、协程(coroutine)以及异步I/O模型,帮助开发者在Python中实现高性能的并发...
Python 3.7.5rc1 是 Python 编程语言的一个中期版本,其官方标准库文档是学习和理解 Python 内置功能和模块的重要资源。这个文档集合包含了丰富的信息,帮助开发者充分利用 Python 的强大功能。以下是一些主要的知识...
- **pickle模块**:序列化/反序列化对象到二进制格式,常用于持久化存储或传递复杂数据结构。 - **csv模块**:读写CSV文件的标准工具。 #### 4. 时间与日期 - **datetime模块**:处理日期和时间的基本操作。 - **...
- **单一继承**: 一个类可以从另一个类继承属性和方法。 - **多继承**: 一个类可以从多个父类继承。 #### 9.6 私有变量 - **私有成员**: 使用 `_` 或 `__` 前缀表示私有成员,限制访问权限。 #### 9.7 零杂技巧 - ...
- **第二十六至二十九课**:可能涉及文件和目录操作,以及数据持久化,如JSON或pickle模块。 - **第三十至三十一课**:可能讲解更多的进阶主题,如生成器(Generator)和上下文管理器(Context Manager)。 以上...
Python提供了多种方式实现数据持久化,例如使用pickle模块序列化对象,或者使用SQLite这样的轻量级数据库。 8. **用户交互**:如果TodoApp是一个命令行应用,那么可以使用Python的`input()`函数获取用户输入;如果...
9. **数据持久化**:可能讲解了如何使用pickle或json模块将Python对象序列化和反序列化,以便保存和恢复数据。 10. **单元测试**:在开发过程中,单元测试是确保代码质量的重要手段。可能介绍了unittest模块的使用...
- 类实例的第一个参数。 - 代表当前对象自身。 - **类**: - 定义对象的模板。 - 包含属性和方法。 - **对象的方法**: - 类的实例化后的行为。 - 可以修改对象的状态。 - **__init__方法**: - 构造函数...
Python基础教程第10章详细介绍了如何在Python中进行目录和文件操作,这对于任何需要持久存储数据或处理文件的程序都是至关重要的。本章涵盖了以下几个关键知识点: 1. **基本文件操作**: - **打开和关闭文件**:...