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

Python第四课-深入文件与异常(数据持久化)

阅读更多
Python第三课——初探文件与异常 学习的主要是从文件读取数据、异常处理基本语法
本节课学习如何使用Python向文本文件中写入数据、异常处理的深入补充


1、创建文件,并将需要持久化得数据写入文件中。
'''将上课demo中的谈话内容(conversations)按角色(role)的不同,分别存入两个文本文件中'''

man = [] #分别定义两个list 用来存储两个role的conversations
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': #通过判断role来确定要存入的list
                man.append(line_spoken)
            else:
                other.append(line_spoken)
    except ValueError:
        pass
    data.close() #别忘了完成文件操作关闭数据文件对象
except IOError:
    print('The file is missing!')

try:
    man_file = open('man_data.txt', 'w') #数据文件对象中的文件参数如果不存在,并且相应目录有相应权限,open()会自动创建文件
    other_file = open('other_data.txt', 'w') # 'w'为文件数据对象的'写'模式

    print(man, file = man_file) #print()函数中的file参数为写入的文件名
    print(other, file = other_file)

    man_file.close() #别忘了完成文件操作关闭数据文件对象
    other_file.close()
except IOError:
    print('File Error!')



2、改进上面代码中的异常处理逻辑和代码:

上面代码中的异常处理方式依旧是不完善的,想想看,如果在man_file.close()语句之前,代码发生了错误,那么数据文件对象是不会被关闭掉的。

改进代码:

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: #将IOError异常对象赋予ioerr变量
    print('File Error :' + str(ioerr)) #将ioerr转换为字符串类型

try:
    man_file = open('man_data.txt', 'w')
    other_file = open('other_data.txt', 'w')

    print(man, file = man_file)
    print(other, file = other_file)
except IOError as ioerr:
    print('File Error: ' + str(ioerr))
finally: #无论try代码块或者except代码块中的语句是否被执行,finally代码块中的语句
    if 'man_file' in locals(): #判断数据文件对象是否存在,loclas() BIF返回作用域中所有变量的字典
        man_file.close()
    if 'man_file' in locals():
        man_file.close()



3、Python中 文件处理的语法糖:

利用with语句,可以将文件处理的代码简化,无需考虑关闭文件,裁剪掉文件异常处理语句中的finally语句。
作用一:简化语法,减少工作量。
作用二:通过逻辑抽象,减少码农脑细胞死亡速度和出错概率。

对以上代码第二段之改进:
try:
    with open('man_data.txt', 'w') as man_file:
        print(man, file = man_file)
    with open('other_data.txt', 'w') as other_file:
        print(other, file = other_file)
except IOError as ioerr:
    print('File Error: ' + str(ioerr))

OR
try:
    with open('man_data.txt', 'w') as man_file, open('other_data.txt', 'w') as other_file:
        print(man, file = man_file)
        print(other, file = other_file)
except IOError as ioerr:
    print('File Error: ' + str(ioerr))
分享到:
评论

相关推荐

    Python基础教程(crossin全60课)

    - **【Python第33课】处理文件中的数据** - **主要内容**:讲解如何处理文件中的数据。 - **知识点**: - 数据的解析与提取; - 数据清洗与预处理; - 数据存储与持久化。 - **【Python第34课】break** - **...

    python程序设计教程-张莉-江苏省python二级教材-全套PPT

    第4章《字典与集合》涵盖了Python中的两种特殊数据结构。字典提供了键值对存储,集合则是一种无序不重复元素序列,这两个数据结构在处理复杂数据时特别有用。 第5章《循环控制结构》进一步扩展了循环的概念,包括...

    Python基础教程60课

    #### Python第33课:处理文件中的数据 - **知识点**:学习如何处理文件中的数据,包括读取、解析等。 - **实践**:编写程序处理文件数据。 #### Python第34课:break - **知识点**:介绍`break`语句的用途。 - **...

    python课程设计第16-20天,python-Day16-20.rar

    5. **文件操作和数据持久化**: - Day19可能涉及读写文件,包括文本文件和二进制文件,以及如何使用`open()`函数和文件对象的方法。 - 学习JSON或CSV格式的数据读写,了解如何使用`json`和`csv`模块。 - 数据库...

    Mohit -- Python Penetration Testing Essentials -- 2015.pdf

    根据提供的文件信息,我们可以深入探讨《Python Penetration Testing Essentials》这本书中的关键知识点。该书由Mohit撰写,出版于2015年,主要聚焦于如何利用Python进行渗透测试。 ### 一、Python在渗透测试中的...

    Python基础教程详解(第三十一课)-读文件.doc

    在Python编程中,读取文件是一项基本操作,特别是在处理大量数据或者存储持久化信息时。在本节【Python基础教程详解 第31课】中,我们将深入探讨如何使用Python读取文本文件。首先,理解文件操作的重要性至关重要,...

    python爬虫源码QunarSpider-master.zip

    Python提供了多种数据持久化方式,如CSV文件、JSON格式、SQLite数据库等。理解如何将数据结构化并写入这些存储媒介是爬虫开发的重要环节。 7. **多线程与异步**:为了提高爬取速度,项目可能采用了`concurrent....

    Python库 | workflows-2.6-py2.py3-none-any.whl

    7. **持久化存储**:将工作流状态存储在数据库或其他持久化介质中,以便在系统重启后恢复。 8. **API接口**:可能提供RESTful API,使得其他系统可以触发或查询工作流状态。 使用`workflows`库可以极大地提升开发...

    Python库 | mnem-1.2.tar.gz

    3. **持久化存储**:库的核心功能可能是提供持久化存储,这意味着即使程序关闭,数据也能在硬盘上保存并下次加载时恢复。这可能涉及到文件系统、数据库或其他形式的存储后端。 4. **性能优化**:为了处理大量数据,...

    Python库 | pyApp-3.2.0-py2.py3-none-any.whl

    3. 数据管理:可能包含了数据持久化的方法,如读写文件或数据库,帮助开发者存储和检索应用程序的数据。 4. 跨平台兼容性:由于其声明的“none-any”特性,pyApp库可以在多种操作系统上运行,包括Windows、Linux和...

    head first python(中文版)--python入门必备

    8. **数据持久化**:探讨如何使用SQLite数据库存储和检索数据,以及SQL查询语言的基础。 9. **并发与异步编程**:了解Python中的线程和进程,以及异步编程的概念,如协程和事件循环。 10. **实战项目**:通过实际...

    Python简明教程-沈洁元

    - 使用文件系统或数据库持久化数据; - 示例:将数据序列化到文件中。 #### 13. 异常处理 - **try...except语句**: - 捕获并处理可能发生的错误; - 示例:`try: x = int(input()) except ValueError: print(...

    精品课件 Python从入门到精通 第13章 文件及目录操作(共26页).ppt

    在Python编程中,文件和目录操作是至关重要的部分,它们允许程序员进行数据的持久化存储以及组织项目结构。第13章"文件及目录操作"深入讲解了如何在Python中进行这些操作,以下是对相关知识点的详细说明: 1. **...

    《征服Python--语言基础与典型应用(2)

    学会文件操作是实现数据持久化和与其他程序交互的关键。 以上知识点构成了Python编程的基础,并在实际项目中广泛应用。通过学习和练习这些内容,开发者能够逐步掌握Python语言,并运用到各种实际问题的解决中。对于...

    用笨办法学python第四版

    6. **文件操作**:教授如何打开、读取、写入和关闭文件,实现数据的持久化存储。 7. **面向对象编程**:介绍类和对象的概念,讲解继承、封装和多态等面向对象特性,让读者了解Python的面向对象编程思想。 8. **...

    Python库 | rsscrawler-6.3.3.tar.gz

    6. **存储和持久化**:支持将抓取到的数据保存到数据库或文件,便于后续处理和分析。 在实际应用中,`rsscrawler`库可以广泛应用于新闻聚合服务、社交媒体监控、内容推荐系统等领域。例如,你可以创建一个定时任务...

    Python100Cases-master.zip

    11. **数据持久化** - JSON:将Python对象转换为JSON格式,便于存储和传输。 - Pickle模块:Python内置的序列化和反序列化工具。 12. **并发编程** - 多线程:使用threading模块实现并发执行任务。 - 多进程:...

    简明Python教程-V4.0c-2017-译本.pdf

    教程还会介绍文件操作,如何读写文件以实现数据持久化。 9. **异常处理**: 异常是程序运行时发生的错误,Python通过try-except语句捕获和处理异常,确保程序的健壮性。 10. **标准库**: Python的标准库包含了大量...

    python入门笔记-李金(强烈推荐).zip

    学习如何在Python中打开、读取、写入和关闭文件,是处理数据和持久化信息的基础。此外,了解文件路径、文本与二进制文件的区别以及文件对象的方法也很重要。 **7. 数据结构** Python提供了多种数据结构,如列表...

Global site tag (gtag.js) - Google Analytics