这几天对Python中文件的处理进行了学习(参考工具书为headfirst系列),今天对这几天学习过程中几个要点(主要是异常处理机制)进行简单的小结。
首先需要利用Python中的open()函数打开文件,并对进行赋值:
这里默认路径与文件路径一致,若不一致时,可以对当前默认路径进行修改:
当然也可以直接在open()函数参数中输入文件路径。
接下来,可以根据具体的工作需要对文件中的数据进行处理,这里主要对Python中的异常处理机制进行介绍:
在实际利用Python处理数据时,由于逻辑、文件等问题会引起操作错误,导致程序无法按照编写者的期望正常运行,当然在意外情况比较小的时候,我们可以通过测试程序,根据运行提供的Traceback信息对程序进行调整;但随着程序处理过程中遇到的意外情况的增加,需要不断增加代码来维持程序的正常运行不出错,大大增加了程序编写的工作量,而且会让程序的可读性严重下降。
实际上,Python提供的异常处理机制允许程序错误的出现,但同时会监视错误的发生,并提供恢复的机会[1]。具体来说,正常处理机制下,Python对代码进行运行,若没有错误,成功得到运行结果,发现错误时,运行终止,并通过Traceback提供错误信息;在异常处理机制下,Python首先尝试运行代码,没有问题,得到结果,若发现错误,Python会执行恢复代码,并继续执行代码。
刚刚对Python的异常处理机制进行简单介绍,实际实现这一机制是通过try/except语句实现,举个例子:
“try:”后所跟代码是Python进行尝试执行的部分,若在执行这部分代码过程中出现错误,那么Python会执行恢复代码,即“except:”后的代码,这里是pass语句,即空语句,不做任何事情,执行恢复代码后,Python继续正常执行代码。
当然,异常处理机制为我们精简程序带来很大方便,但很多时候,我们并不希望所有的异常都被“pass”,对于特定的错误,我们仍然希望Traceback能提供相应的错误信息帮助我们修改自己的程序。对于这种情况,我们可以在“except”后限定异常处理机制的错误范围,例如:
这样,只有“ValueError”(数据不符合期望)类型的错误才会“pass”,而像“IOError”(文件操作错误)类型的错误则会通过Traceback给出相关信息。
Tips:在对一个文件处理完后,若想重新对文件数据进行处理,需要利用seek()函数将指针重新指向文件起始位置
小结:主要学习了Python中的文件处理,重点介绍异常处理机制的简单使用
10/13补充:
在前几天的学习中,基于读取文件数据对Python中的异常处理机制和try/except语句有了简单的了解。在实际对文件进行操作时,读or写文件后都需要进行文件的关闭操作。若将文件关闭操作放在try语句后,当在数据处理过程中出现异常情况时,Python会直接跳去执行except后的代码,导致数据可能遭到破坏。
要想让关闭文件的代码无论在什么情况下都会运行,可以在try语句块中加入finally,这样即使出现错误,也能保证关闭正常进行。当然在Python2.6引入with语句后,可以代替finally功能,进一步精简代码
参考文献:
[1]《Head First Python》P89