`
yuanta11
  • 浏览: 61461 次
  • 性别: Icon_minigender_1
  • 来自: 淄博
社区版块
存档分类
最新评论

Python第六课-持久化相关的另一个模块pickle

阅读更多
第五课中处理持久化的方法还是有待商榷

第五课中我们利用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~!干完,手工!
分享到:
评论

相关推荐

    Python3.7.2中文文档-标准库-Python数据持久性

    3. 数据库接口:Python的`sqlite3`模块提供了一个轻量级的SQLite数据库引擎,可以直接在文件中存储数据,适合小规模应用。对于大型应用,Python还有许多第三方库如`psycopg2`(PostgreSQL)、`pyodbc`(ODBC)、`...

    python基础系列教程-Python3.x标准模块库目录.docx

    22. **pickle**:序列化和反序列化Python对象,用于持久化存储。 23. **shutil**:提供高级文件和目录操作,如复制、移动、删除等。 24. **hashlib**:提供多种散列算法,用于数据校验和消息摘要。 25. **logging...

    Python使用pickle模块储存对象操作示例

    第一个参数是要存储的对象,第二个参数是打开的文件对象,第三个参数是协议号(0代表ASCII协议)。可以连续dump多个对象到同一个文件。 5. 关闭文件:操作完成后,应当使用文件对象的close()方法关闭文件,确保所有...

    python第三方库文档

    根据给定文件内容,我们可以提炼出Python编程中使用的第三方库及其相关知识点。以下是从文档中提取的关键知识点: 1. 数据持久化和交换 - 序列化对象:可以将对象状态转换为可存储的格式(如JSON或Pickle),以实现...

    Python100Cases-master.zip

    "Python100Cases-master.zip"是一个包含丰富的Python实践案例的压缩包,旨在帮助学习者深入理解和掌握Python编程技能。本文将详细解析这个压缩包中的主要知识点,带你领略Python的魅力。 1. **基础语法** - 变量与...

    High Performance Python - EN

    - **数据持久化**:学习如何有效地存储和加载大量数据,例如使用`pickle`和`shelve`模块。 7. **Python标准库的优化** - **内置模块的性能**:分析Python标准库中的一些模块,如`os`, `sys`, `re`等,如何合理...

    Python-模拟人生

    游戏的进度通常需要持久化存储,这可以利用Python的文件操作功能,如读写JSON或pickle格式的数据。当游戏结束或玩家退出时,游戏状态可以被序列化并保存到文件,下次启动游戏时再反序列化恢复。 此外,Python的模块...

    Head First Python(2nd Edition)[美]Paul Barry【高清版】

    6. **数据持久化**:除了文件操作,还介绍了使用pickle模块序列化和反序列化Python对象,以及使用JSON进行数据交换。 7. **Web编程**:通过Python的Flask框架介绍Web开发基础知识,包括路由、模板引擎和数据库交互...

    Python-答题辅助决策自定义适配答题app

    本项目“Python-答题辅助决策自定义适配答题app”旨在利用Python技术实现一个能够根据用户需求定制的答题辅助系统。 1. **Python基础知识**: - Python语法:Python以其清晰的语法结构和易于理解的特性闻名,适用...

    python-cookbook 3

    7. **数据序列化**:讨论了如何将Python对象转化为持久化的数据格式,如JSON、pickle和XML。 8. **并发与并行**:讲解了多线程、多进程、协程(coroutine)以及异步I/O模型,帮助开发者在Python中实现高性能的并发...

    python-3.7.5rc1官网标准库文档

    Python 3.7.5rc1 是 Python 编程语言的一个中期版本,其官方标准库文档是学习和理解 Python 内置功能和模块的重要资源。这个文档集合包含了丰富的信息,帮助开发者充分利用 Python 的强大功能。以下是一些主要的知识...

    Python 标准库及拓展脑图

    - **pickle模块**:序列化/反序列化对象到二进制格式,常用于持久化存储或传递复杂数据结构。 - **csv模块**:读写CSV文件的标准工具。 #### 4. 时间与日期 - **datetime模块**:处理日期和时间的基本操作。 - **...

    超级无敌Python教程.pdf

    - **单一继承**: 一个类可以从另一个类继承属性和方法。 - **多继承**: 一个类可以从多个父类继承。 #### 9.6 私有变量 - **私有成员**: 使用 `_` 或 `__` 前缀表示私有成员,限制访问权限。 #### 9.7 零杂技巧 - ...

    鱼c小甲鱼零基础学python全套课后题带目录-酸饺子学习版1

    - **第二十六至二十九课**:可能涉及文件和目录操作,以及数据持久化,如JSON或pickle模块。 - **第三十至三十一课**:可能讲解更多的进阶主题,如生成器(Generator)和上下文管理器(Context Manager)。 以上...

    每天分享几个python项目 —— todoapp

    Python提供了多种方式实现数据持久化,例如使用pickle模块序列化对象,或者使用SQLite这样的轻量级数据库。 8. **用户交互**:如果TodoApp是一个命令行应用,那么可以使用Python的`input()`函数获取用户输入;如果...

    《疯狂Python讲义》代码 第二部分(共二部分)18-20.rar

    9. **数据持久化**:可能讲解了如何使用pickle或json模块将Python对象序列化和反序列化,以便保存和恢复数据。 10. **单元测试**:在开发过程中,单元测试是确保代码质量的重要手段。可能介绍了unittest模块的使用...

    python简明教程

    - 类实例的第一个参数。 - 代表当前对象自身。 - **类**: - 定义对象的模板。 - 包含属性和方法。 - **对象的方法**: - 类的实例化后的行为。 - 可以修改对象的状态。 - **__init__方法**: - 构造函数...

    ch10-Python基础教程-相甍甍-清华大学出版社.ppt

    Python基础教程第10章详细介绍了如何在Python中进行目录和文件操作,这对于任何需要持久存储数据或处理文件的程序都是至关重要的。本章涵盖了以下几个关键知识点: 1. **基本文件操作**: - **打开和关闭文件**:...

Global site tag (gtag.js) - Google Analytics