一、异常处理
概念:
程序停止执行并且提示错误信息 这个动作,我们通常称之为 :抛出异常
异常处理是我们在开发程序时,由于很难对所有的特殊情况都处理好,通过异常处理可以针对突发事件进行集中的处理,这样就可以保证程序的完整性和稳健性。
二、捕获异常
1.简单捕获异常语法
num = int(input("请输入一个整数:"))
#一条语句,当输入不是整数时会报错
#异常处理后的程序
try:
#不能确定正确执行的代码
num = int(input("请输入一个整数:"))
except:
#错误的处理代码
print("请输入正确的整数:")
print("-"*50)
当我们使用异常处理时,通过异常处理后,无论代码或程序是否有错,这个程序都能够执行下去,不会报错。
所以这里也会有一些不方便,就是无法知道自己是为什么出错了
2.错误异常类型捕获
try:
print(name)
except NameError:
print("产生错误了")
try:
print("---------------1")
f = open("123.txt","r")
print("---------------2")
print(name)
except (NameError,IOError): #将可能产生的所有异常类型,都放到下面的小括号中
print("产生错误了")
发生错误的第一个单词就是我们的错误类型
当我们想要知道异常原因时,可以这么写:
try:
print("---------------1")
f = open("132.txt","r")
print("---------------2")
print(name)
except (NameError,IOError) as result:
print("产生错误了")
print(result)
输出result,得到异常结果
当我们无法预知是什么错误是,对于未知错误,我们统一用一个语法进行书写
try:
print("---------------1")
f = open("132.txt","r")
print("---------------2")
print(name)
except Exception as result: #Exception可以承接任何错误
print("产生错误了")
print(result)
3.异常处理完整语法
try:
#无法确定正确执行的代码
except Exception as result:
#发生异常时所执行的代码
finally:
#无论是否出现异常,都会执行的代码
4.异常的传递
当在函数/方法执行出现异常,会将异常传递给函数/方法的调用一方
如果传递到主程序,仍然没有异常处理,程序才会被终止
提示:
在开发中,可以在主函数中增加异常捕获,而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中,这样就不需要在代码中增加大量的异常捕获,能够保证代码的整洁
#异常的传递
def demo1():
return int(input("输入整数:"))
def demo2():
return demo1()
print(demo2())
当函数在运行的过程中,程序出现异常时,会一级一级的向上传递,如果没有发现异常处理,最后会发生错误
如果函数中语句出错,在每个函数中增加异常捕获是一件很不理智的行为
我们可以利用异常的传递性,在主程序中捕获异常
def demo1():
return int(input("输入整数:"))
def demo2():
return demo1()
try:
print(demo2())
except Exception as result:
print("未知错误 %s" %result)
发现我们在主程序中书写了一个异常捕获,最后是成功将异常捕获到了
三、主动抛出异常
1.抛出raise异常的应用场景
在开发中,处理代码执行错误 python解释器会抛出异常之外,还可以根据应用程序特有的业务需求主动抛出异常
实例:
2.主动抛出异常
python中提供了一个Exception异常类
在开发时,如果满足特定业务需求时,希望抛出异常,可以:
1.创建一个Execption异常类
2.使用raise关键字抛出异常
举例:
def input_password():
#1.提示用户输入密码
pwd = input("请输入密码:")
#2.判断密码长度>=8 ,返回用户输入的密码
if len(pwd) >=8 :
return pwd
#如果<8 主动抛出异常
print("主动抛出异常")
#创建异常对象
ex = Exception("密码长度不够")
#主动抛出异常
raise ex
try:
print(input_password())
except Exception as result:
print(result)
四、文件
概念:就是储存在某种长期储存设备上的一段数据
文件可以将数据长期保存下来,在需要的时候使用
五、文件的基本操作
在python中要操作文件需要记住1个函数和3个方法
1.打开文件
open函数的第一个参数就是要打开文件的文件名(文件区分大小写) 然后会返回文件操作对象
2.读、写文件
read方法可以一次性读入并返回文件的所有内容
3.关闭文件
close方法负责关闭文件
如果忘记关闭文件,会造成系统资源消耗,而且会影响后续对文件的访问
#打开文件
file = open("README")
#读取文件
text = file.read()
#关闭文件
file.close()
4.文件指针
文件指针标记从哪个位置开始读取数据,第一次打开文件时,通常文件指针会指向文件开始的位置,当执行完read方法后,文件指针会移动到内容的末尾
所以当我们执行了一次read方法后,在此使用时是无法再读取数据。
5.打开文件的方式
因为open函数默认是以只读方式打开文件,如果我们需要写入等其他操作的话,需要在open中添加访问方式
6.分行读取内容
read方法会一次性把所有内容读取到内存
readline方法可以一次读取一行内容,方法执行后会把文件指针移动到下一行,在读取
六、文件/目录常用管理操作
在python中,如果希望通过程序实现下述功能,需要导入os模块
1.文件操作
rename 重命名文件 示例:os.rename(源文件名,目标文件名)
remove 删除文件 示例:os.remove(文件名)
2.目录操作
listdir 目录列表 os.listdir(目录名)
mkdir 创建目录 os.mkdir(目录名)
rmdir 删除目录 os.rmdir(目录名)
gercwd 获取当前目录 os.getcwd()
chdir 修改工作目录 os.chdir(目标目录)
path.isdir 判断是否是文件 os.path.isdir(文件路径)