《Head First Python》笔记 第三章 文件与异常

文件与异常 Files and Exceptions: Dealing with Errors

Python中的基本输入机制是**基于行(line based)**的:当程序从文本文件中读入数据时,一次读取一行。app

使用open() BIF打开一个磁盘文件,建立一个迭代器从文件读取数据,一次读取一个数据行。学习

在此输入图片描述

通常流程:打开—处理—关闭ui

在此输入图片描述

例子(要看注释):code

在此输入图片描述

split()方法返回一个字符串列表(list),这会赋值至一个目标标识符列表。这称为多重赋值(multiple assignment)图片

在此输入图片描述

注意到上面的目标标识符列表是用小括号包围,而不是中括号。ip

Python有两种类型的列表:一种是能够改变的列表(用中括号包围),另外一种一旦建立就不能改变(用小括号包围)。后者是一种不可变列表(immutable list),一般称为元组(tuple)。能够认为元组等同于列表,不过有一点区别:一旦建立,元组中的数据在任何状况下都不能改变字符串

在此输入图片描述

若是没有冒号或者有多个冒号就会出错,好比:get

Other Man: Now let's get one thing quite clear: I most definitely told you!

出错信息以下(数据不符合指望的格式时会出现ValueError):it

在此输入图片描述

有太多冒号,不能赋给两个变量。能够设定split的第二个参数,控制将数据行分解为多少个部分(学习使用help() BIF):io

在此输入图片描述

可是若是碰见空行,或者没有冒号的又会出错:

在此输入图片描述

这样有两种方法来解决:

  1. 添加逻辑,好比判断是否有冒号
  2. 异常处理程序处理运行时错误

在本场景下,使用find()方法来添加逻辑,以下:

在此输入图片描述

not关键字将一个条件取反。

这样能够正确运行了,可是若是有其余异常呢。并且这样额外的逻辑,形成了代码碎片。

处理异常

Rather than adding extra code and logic to guard against bad things happening, Python’s exception handling mechanism lets the error occur, spots that it has happened, and then gives you an opportunity to recover.

在此输入图片描述

当捕获到异常后,不想处理,可使用pass

在此输入图片描述

pass语句就是Python的空语句或null语句,什么也不作。

数据没法正常访问时会出现IOError,添加额外逻辑或者使用异常处理方式哪一种更好呢?

第一种使用os.path.exists(filename)方法判断文件是否存在,第二种不判断,由异常直接处理。

在此输入图片描述

Concentrate on what your code needs to do. 要重点关注你的代码须要作什么。

专一于业务须要,那些额外的逻辑虽然能保证程序正确执行,但并非必须的,使用异常处理能够很好的避免多余的判断等。

特定指定异常

在此输入图片描述

相关文章
相关标签/搜索