1. 文件备份需求
将bill.text.bak文件作为bill.txt文件的备份,并将文件内标为测试的数据行删除
实现过程:
①open+r读取文件
②open+w写入文件
③for循环遍历,判断是不是测试内容
④将两个文件对象均关闭
# 打开文件得到文件对象,准备读取
fr = open("D:/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw = open("D:/bill.txt.bak", "w", encoding="UTF-8")
# for循环读取文件
for line in fr:
line = line.strip()
# 判断内容,将满足的内容写出
if line.split(",")[4] == "测试":
continue # continue进入下一次循环,这一次后面的内容就跳过了
# 将内容写出去
fw.write(line)
# 由于前面对内容进行了strip()的操作,所以要手动的写出换行符
fw.write("\n")
# close2个文件对象
fr.close()
fw.close() # 写出文件调用close()会自动flush()
2. 异常捕获的语法
try:
可能要发生异常的语句
except[异常 as 别名;]
出现异常的准备手段
[else:]
未出现异常时要做的手段
[finally:]
不管出不出现异常都会做的事情
注意:如果尝试捕获的异常类型和执行代码出现的异常类型不同,则无法捕获异常
一般try下方只放一行尝试执行的代码
当要捕获多个异常时,将要捕获异常的名字放到expect后,并用元组的形式进行书写
# 捕获指定的异常
# try:
# print(name)
# except NameError as e:
# print("出现了变量未定义的异常")
# print(e)
# 捕获多个异常
# try:
# # 1 / 0
# print(name)
# except (NameError, ZeroDivisionError) as e:
# print("出现了变量未定义 或者 除以0的异常错误")
# 未正确设置捕获异常类型,将无法捕获异常
# 捕获所有异常
try:
f = open("D:/123.txt", "r", encoding="UTF-8")
except Exception as e:
print("出现异常了")
f = open("D:/123.txt", "w", encoding="UTF-8")
else:
print("好高兴,没有异常。")
finally:
print("我是finally,有没有异常我都要执行")
f.close()
异常的传递性:
# 定义一个出现异常的方法
def func1():
print("func1 开始执行")
num = 1 / 0 # 肯定有异常,除以0的异常
print("func1 结束执行")
# 定义一个无异常的方法,调用上面的方法
def func2():
print("func2 开始执行")
func1()
print("func2 结束执行")
# 定义一个方法,调用上面的方法
def main():
try:
func2()
except Exception as e:
print(f"出现异常了,异常的信息是:{e}")
main()
# func2 开始执行
# func1 开始执行
# 出现异常了,异常的信息是:division by zero
注意:当所有函数都没有捕获到异常时,程序就会报错
(日常美图时间)