异常
异常指程序运行过程中出现的非正常现象,例如用户输入错误,除数为0,需要处理的文件不存在,数组下标越界等
异常处理就是指程序在出现问题时依然可以正确的执行剩余的程序,而不会因为异常而终止执行
python中引进了很多描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行处理的方法。下面较为完整的展示了python中内建异常类的继承层次
异常也采用对象的方式来处理。处理过程
1.抛出异常:在执行方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给解释器
2.捕获异常:解释器得到该异常后,寻找相应的代码来处理该异常
try…一个except结构
try:
被监控的可能引发异常的语句块
except BaseException as e:
异常处理语句块
若try没有异常,except不执行,若try异常,则异常后的语句不执行,直接跳到excep
try…多个except结构
try:
被监控的可能引发异常的语句块
except Exception1:
处理的语句块
except Exception2:
处理的语句块
except BaseException:
处理可能漏掉的异常的语句块
try…except…else结构
try有异常,执行except,没有则执行else
try…except…finall结构
finall块无论是否发生异常都会被执行,通常用来释放try块中申请的资源
常见异常的解决
SyntaxError:语法错误
NameError:尝试访问一个没有 申明的变量
ZeroDivisionError:除数为0错误
ValueError:数值错误
TypeError:类型错误
AttributeError:访问对象的不存在属性
IndexError:索引越界异常
KeyError:字典的关键字不存在
常见异常汇总
with上下文管理器
with context_expr [as var]
语句块
with上下文可以自动管理资源,在with代码块执行完毕后自动还原进入该代码之前的现场或上下文,无论何种原因跳出with块,无论是否有异常,总能保证资源正常是否。极大简化了工作,在文件操作,网络通信相关的场合非常常用,但不是取代tryexceptfinall
traceback模块
自定义异常类
文件:
文本文件:
文本文件存储的是普通字符文本,默认为Unicode字符集,可以使用记事本程序打开,但是,像word软件编辑的文档不是文本文件
二进制文件:
二进制文件把数据内容用字节进行存储,无法用记事本打开。必须使用专用的软件解码,如MP4视频文件,MP3音频文件,jpg图片,doc文档
文件操作相关模块概述
创建文件对象open()
open(文件名【,打开方式】
f=open(r"d:\b.txt","a")
如果没有增加模式“b”,则默认创建的是文本对象,处理的基本单元是字符,如果有,则是二进制文件对象,处理的基本单元是字节
文本文件的写入
基本的文件写入操作
1.创建文件对象
2.写入数据
3.关闭文件对象
为了确保打开的文件对象正常关闭,一般结合异常机制的finally或者with关键字实现
with关键字可以在代码块执行完毕后自动还原进入该代码块时的现场
中文乱码问题
windows操作系统默认的编码是GBK,Linux操作系统默认的编码是UTF-8.用open是编码GBK
如果想用UTF-8,在后面加上encoding="utf-8"
write(a):把字符串a写入到文件中
writelines(b):把字符串列表写入文件中,不添加换行符
文本文件的读取
二进制文件的读取和写入
二进制文件的处理流程和文本文件流程一致,首先还是要创建文件对象,不过,我们需要指定二进制模式,从而创建二进制文件对象。