Python爬虫、数据分析与可视化:工具详解与案例实战
上QQ阅读APP看书,第一时间看更新

4.4.2 以只读模式打开文件

在Python里,可以通过open方法打开文件,该方法返回被打开的文件对象,通过返回的文件对象,我们可以读写文件。

虽然open方法有多个参数,但是在实际项目里用得比较多的是其中的两个参数:第一个是指定文件名的file参数,第二个是指定模式的mode。在表4.3里,我们给出了常用的文件打开模式。

表4.3 打开文件时常用的模式

我们在4.4.1节里创建的HelloWorld.txt里加入一行文字“Hello Python.”。在OpenFile.py范例中,我们将以只读模式打开文件,并通过read方法输出其中的内容。


01 # coding=utf-8
02 file = open("D:/1/HelloWorld.txt",mode='r')
03 print(file.read()) # 会输出文件的内容
04 file.close() # 用完以后一定要关闭文件

在第2行里,我们通过open方法打开了指定的文件,并且在其中通过mode指定了只读模式,之后在第3行通过read方法输出了文件的内容。注意,在操作完文件后,一定得通过close方法关闭文件。

在OpenFile.py范例中,如果出现异常情况,就会出现“项目终止”的不良状况。对此,我们在OpenFileWithTry.py范例中,在读取文件里增加了“异常监控”的功能。


01 # coding=utf-8
02 try:
03     file = open("D:/1/HelloWorld.txt",mode='r')
04     print(file.read()) # 会输出文件的内容
05 except Exception as e:
06     print(e)
07 finally:
08     if 'file' in locals().keys():
09         print('Close File')
10         file.close() # 用完以后一定要关闭文件
11 print('continue')

注意,第3行和第4行的打开和读取文件的代码被包含在了第2行的try语句里,如果出现异常,就会跳转到第5行的except从句里。这样哪怕出现了异常,也会执行第11行的后继代码,不会导致项目被终止。

在加入异常监控后,我们需要保证不论是否发生异常,被打开的文件均需要被关闭,所以我们把第10行的close语句加入finally从句里。

第8行的判断语句判断file对象是否存在。如果异常发生在第4行的读文件时,那么此时文件已经处于打开状态,file对象是存在的,此时需要通过file.close关闭文件。如果在第3行打开文件时就已经出错,那么文件本身没有被打开,file对象不存在,也就是无法通过第8行的if条件判断,所以无须再关闭文件。

在之后的文件操作范例中,我们均会引入异常处理流程,不仅会确保读写文件时的异常不会终止程序,还会确保文件在操作完以后被正确地关闭。