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
可是若是碰见空行,或者没有冒号的又会出错:
这样有两种方法来解决:
在本场景下,使用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)
方法判断文件是否存在,第二种不判断,由异常直接处理。
专一于业务须要,那些额外的逻辑虽然能保证程序正确执行,但并非必须的,使用异常处理能够很好的避免多余的判断等。