9.Python之异常处理

本文深入探讨Python中的异常处理机制,包括ZeroDivisionError和FileNotFoundError等常见异常类型,以及如何使用try-except代码块来增强程序的健壮性,处理无效数据和资源缺失问题。
  • 异常处理
    python使用被称为异常的特殊对象来管理程序执行期间发生的错误。
    每当发生让python不知所措的错误时,它都会创建一个异常对象。如果编写了处理该异常的代码,程序会继续运行;否则程序会停止,并显示一个traceback,其中包含有关异常的报告。
    异常是使用try-except代码块处理的,try-exception代码块让python执行指定的操作,同时告诉python发生异常怎么办。使用了try-exception代码块时,即便出现异常,程序也将继续运行,显示你编写的友好的错误消息。
  • ZeroDivisionError
    一个数字除以0会触发ZeroDivisionError异常。

在这里插入图片描述
使用try-except代码块处理可能引发的异常,将可能导致错误的代码行放在try代码块内。

try:
	print(5/0)
except ZeroDivisionError:
	print("You can't divide by zero!")

在这里插入图片描述
创建一个只执行除法运算的计算器:

print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit")

while True:
	first_number=input("first number: ")
	if(first_number=='q'):
		break
	second_number=input("second number: ")
	if(second_number=='q'):
		break
	answer = int(first_number)/int(second_number)
	print("Answer is "+ str(answer))

在这里插入图片描述
在除数为0的时候触发异常,导致程序崩溃,让用户看到traceback是很糟糕的事情。
使用try-except代码块进行异常处理:

print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit")

while True:
	first_number=input("first number: ")
	if(first_number=='q'):
		break
	second_number=input("second number: ")
	if(second_number=='q'):
		break
	try:
		answer = int(first_number)/int(second_number)
	except ZeroDivisionError:
		print("You can't divide by 0.")
	else:
		print("Answer is "+ str(answer))

在这里插入图片描述
通过预测可能发生错误的代码,可以编写出健壮的程序,即使面临无效数据或缺少资源,也能够继续运行,从而抵御无意的用户错误和恶意的攻击。

  • FileNotFoundError
    使用文件时,常见的问题是找不到文件:文件在别的地方、文件名不对或者文件根本不存在。
filename = "alice.txt"
with open(filename) as f_obj:
	contents = f_obj.read()

在这里插入图片描述
这个异常是函数open()导致的,因此需要将open()放在try-except代码块内。

filename = "alice.txt"
try:
	with open(filename) as f_obj:
		contents = f_obj.read()	
except FileNotFoundError:
	msg="Sorry,the file "+ filename + " does not exist."
	print(msg)

在这里插入图片描述
简单分析文本,使用split()方法可以以空格为分隔符将字符串拆分为多个部分,并将这些部分都存储到一个列表中。
将alice.txt文件放入文件夹中

filename = "alice.txt"
try:
	with open(filename) as f_obj:
		contents = f_obj.read()	
except FileNotFoundError:
	msg="Sorry,the file "+ filename + " does not exist."
	print(msg)
else:
	words = contents.split()
	num_words = len(words)
	print("The file "+filename +" has about "+ str(num_words)+" words.")

在这里插入图片描述

  • pass
    使用pass可以让程序在异常的时候一声不吭,直接跳过。
    修改上一段程序为函数形式,以读取多个文件:
def count_words(filename):
	try:
		with open(filename) as f_obj:
			contents = f_obj.read()	
	except FileNotFoundError:
		msg="Sorry,the file "+ filename + " does not exist."
		print(msg)
	else:
		words = contents.split()
		num_words = len(words)
		print("The file "+filename +" has about "+ str(num_words)+" words.")	
	
filenames = ['alice.txt','little_women.txt','siddhartha.txt']
for filename in filenames:
	count_words(filename)

在这里插入图片描述
将异常处理代码改为pass

def count_words(filename):
	try:
		with open(filename) as f_obj:
			contents = f_obj.read()	
	except FileNotFoundError:
		#msg="Sorry,the file "+ filename + " does not exist."
		#print(msg)
		pass
	else:
		words = contents.split()
		num_words = len(words)
		print("The file "+filename +" has about "+ str(num_words)+" words.")	
	
filenames = ['alice.txt','little_women.txt','siddhartha.txt']
for filename in filenames:
	count_words(filename)

在这里插入图片描述
pass语句还充当了占位符,提醒你在程序的某个地方什么都没做,以后可能要做点什么。例如将找不到的文件的名称写入missing_fils.txt文件。

  • 所有异常
    在这里插入图片描述

python异常
头大。。。
就酱!

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值