python详解(7)--异常处理与文件操作

本文详细介绍了Python中的异常处理,包括try...except...else...finally语句、assert语句和raise语句的使用。此外,还讲解了文件操作,如open函数的参数、文件的读写操作以及with语句的上下文管理。最后,提到了Python中的文件和目录操作,如os和shutil模块的常用函数,以及目录遍历的walk函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、python中的异常处理

try…except…else…finally语句:是最基础的异常处理语句,其中
①try:后为要测试的函数体;
②except的作用为捕捉固定类别的异常,如except ValueError as e,即表示捕捉ValueError异常(其他类型异常不捕捉),并且将异常的具体信息保存在变量e中(注意e非str,且as e可省略),并运行except语句后的自定义输入内容,except语句可以有多个,也可将多个异常用一个except语句捕捉,但注意必须添加小括号;
③else:语句后的内容是当try语句中函数体没有发生异常时运行,当被except捕捉到异常时不运行;
④finally:语句后内容无论有没有异常都会运行,放在最后。
:①except语句运行于异常发生后,其要捕捉的异常与语句是一个条件关系,异常的具体信息被保存在变量e中,若不需要则也不会显示;
②except捕捉异常的时间是在异常发生的时间点,而不是try语句运行完,如图所示代码,会一直要求用户输入直至合法;
③注意一般最后一个except省略异常名称,即通配所有异常,然后配合单独的raise用法,将异常再抛出,允许上层处理。
在这里插入图片描述

raise语句:相当于自定义异常的出现条件和具体内容(一般跟在if条件之后),在某条件满足时,raise ValueError(‘xxx’),即抛出ValueError异常并且将括号内内容作为异常的具体信息,这个异常可以被except语句捕捉(若不捕捉,则系统用红字显示’xxx’),异常名可自定义,但应尽量选择合理的异常对象(自定义的异常类也应继承于python的标准异常类)。
注:有单独的raise语句用法,其一般用于except捕获后再抛出,记录自己的信息和异常具体信息,在想明确当前异常抛出但不想处理时使用。
在这里插入图片描述
assert语句:用于对程序在某个时候必须满足的条件进行验证,assert 条件, ‘xxx’,其中若不满足条件,则会出现AssertionError异常,且’xxx’为自定义的异常内容,可以通过except语句捕捉。(注意assert语句只在调试阶段有效,在程序运行时可以通过-O命令来关闭)

错误处理:在多重调用出现异常时会抛出错误堆栈,使用logging模块中的exception函数可以记录错误信息并且将程序继续执行并正常退出,try:…except Exception as e: logging.exception(e),则会记录并打印出错误堆栈信息,并且继续执行下面的代码。

异常的自定义:在模块中可以根据需要自定义异常类,其应该直接或间接的从Exception类中派生,一般自定义的异常类与标准异常类似都以Error结尾,且尽量简单,只添加属性,在后续使用时根据需要用raise抛出。

执行顺序:在try…except…else…finally语句中,如果try语句中发生了except语句没有捕获的异常(或者在except或else语句中发生异常),则会将finally语句内容执行完毕后抛出异常,try语句中有break/continue/return语句退出时,finally语句也会执行,实际操作中,finally一般用于释放外部资源,即断开连接。

:①可以在except语句中使用sys.exc_info()方法来获取当前异常的内容,它返回一个由异常名、描述信息、内存位置组成的元组。
②一种常用的解耦操作:在要import的模块中自定义新异常类,捕获可能出现的由另外的模块导入的异常类并用raise抛出,在最终代码中捕获自定义的新异常类,使最终代码只与导入的模块有关,而不需要为了捕获一个异常重新导入其他模块。

python中的日志处理与logging模块
在开发过程中的问题追踪与排查是很容易的,但是部署到生产环境中后,代码的运行过程相当于是在一个黑盒中,对于问题的追踪和处理会变得相当困难,因此需要在开发时对可能出现问题的部分进行日志记录,这样,当出现问题时可以根据产生的日志文件中的记录追踪问题的具体位置、时间和错误信息等,这就是日志记录的好处。
在简单程序调试时,可以使用print语句进行,但是对于复杂的、规整的代码,应严格按照logging的规范记录日志,在python中日志记录流程的整体框架如下:
Logger:即 Logger Main Class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值