Python异常
了解异常
"""
主动写一段错误代码,演示异常的出现
"""
with open("linux.txt",'r',encoding='UTF-8') as f:
f.close()
异常的捕获方法
基本语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
# 基本捕获语法
try:
open("E:/abc.txt",'r',encoding='UTF-8')
except:
print("出现异常了,因为文件不存在,我将open的模式改为'w'模式打开")
open("E:/abc.txt",'w',encoding='UTF-8')
捕获指定的异常
基本语法:
try:
print(name)
expect NameError as e:
print('name变量名称为定义错误')
注意:
如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
一般try下方只放一行尝试执行的代码
# 捕获指定的异常
try:
1/0
except ZeroDivisionError as e:
print(e)
捕获多个异常
当捕获多个异常时,可以把要捕获的异常类型的名字,放在except后,并用元组的方式进行书写
try:
prrint(1/0)expect(NameError,ZeroDivisionError):
print('ZeroDivision错误...')
异常else
else表示的时如果没有异常要执行的代码。
try:
print(1)
expect Exception as e:
print(e)
else:
print('我是else,是没有异常的时候执行的代码')
finally
finall表示的是无论是否异常都要执行的代码,例如关闭文件
try:
f = open("E:/abc.txt",'r',encoding='UTF-8')
except Exception as e:
print("出现异常了,因为文件不存在,我将open的模式改为'w'模式打开")
f = open("E:/abc.txt",'w',encoding='UTF-8')
else:
print("好开心,没有出现异常")
finally:
f.close()
异常的传递
# 定义一个出现异常的方法
def func01():
print("func01开始执行")
num = 1 / 0 # 肯定有异常
print("func01结束执行")
# 定义一个无异常的方法
def func02():
print("func02开始执行")
func01()
print("func02结束执行")
def main():
try:
func02()
except Exception as e:
print(f"出现异常,异常的信息是{e}")
print(type(e))
Python模块
import time # 导入python内置的time文件
print("你好")
time.sleep(5)
print("您好")
# from 导入
from time import sleep
sleep(5)
from time import *
sleep(5)
自定义模块
def test(a,b):
print(a+b)
import my_moudle as mm
mm.test(1,2)
--main--: 可以测试模块功能,不影响导入后应用
--all--:可以指定通过*导入的内容
Python包
安装第三方包
综合案例:
![](https://i-blog.csdnimg.cn/blog_migrate/ef9e977747e387b7e6b3d6d636e89d7d.png)
def print_file_info(file_name):
"""
这个函数可以接收传入文件的路径,打印文件的全部内容,如果文件不存在
则捕获异常,输出提示信息,通过finally关闭文件对象
:param file_name: 文件路径
:return: None
"""
try:
f = open(file_name, 'r', encoding='UTF-8')
print(f.read())
except Exception as e:
print(f"出现异常,内容为{e}")
finally:
f.close()
def append_to_file(file_name,data):
"""
接收文件路径以及传入数据,将数据追加写入到文件中
:param file_name: 文件名
:param data: 数据
:return: None
"""
try:
f = open(file_name, 'a', encoding='UTF-8')
f.write(data)
except Exception as e:
print(e)
finally:
f.close()
if __name__ == '__main__':
print_file_info("E:\测试.txt")
append_to_file("E:\\abc.txt",'abcdefg')
def str_reverse(s):
"""
接受传入字符串,将字符串反转返回
:param s: 字符串
:return: 反转的字符串
"""
return s[::-1]
def subster(s,x,y):
"""
按照下标x和y,对字符串进行切片
:param s: 字符串
:param x: 下标1
:param y: 下标2
:return: 返回切片后的字符串
"""
return s[x:y]
# 测试
if __name__ == '__main__':
print(str_reverse('Gregory'))
print(subster("gzh6688",1,5))
import my_utils.str_util as s
import my_utils.file_util as f
print(s.subster('Gregory',2,3))
print(s.str_reverse("123456789"))
f.print_file_info("E:\\abc.txt")
f.append_to_file("E:\测试.txt","C罗是球王")