Python处理异常

本文介绍如何在Python中处理文件读取及数据解析时遇到的异常情况,包括使用split方法分割字符串时可能出现的问题,并展示了如何利用try-except结构来增强程序的健壮性。

一个引子:

文件scatch.txt的内容:


Man:Hi.
Woman:Hi.
Man:How are you?
Woman:I'm fine,thank you.And you?
Man:I'm file,too.
Woman:Okay.hi:


执行以下语句后:

data = open('scatch.txt')
for each_line in data:
	(role,line_spoken) = each_line.split(':')
	print(role,end='')
	print(' said:',end='')
	print(line_spoken,end='')

提示错误:



修改如下:

for each_line in data:
	(role,line_spoken) = each_line.split(':',1)
	print(role,end='')
	print(' said:',end='')
	print(line_spoken,end='')
split()方法返回一个字符串列表,这会赋至一个目标标识符列表。这称为多重赋值(multiple assignment)
可用help查到split的用法:



maxsplit是可选参数,表示分割一个字符串最多几次。1表示最多分割两次,分成两部分。


另外:find()方法可以查找字符串中某字符的位置,找不到返回-1,找到就返回其索引位置。

if not each_line.find(':') == -1

      ……

其中“not”关键字,会将条件的值取反。

=================================

要处理大量意外的情况,最好的方法是增加额外的逻辑来进行处理。或者只需在各个错误确实发生时分别处理相应的错误。

处理异常

Python通过trackback来告诉你运行时发生了某种意外情况。运行时错误叫做异常(exception)


Python允许你在异常发生时捕获异常,这就为你提供了一个机会,从这个错误中恢复,最重要的是可以避免崩溃。

通过控制程序的运行时行为,你可以(尽可能地)确保你的Python程序在面对大多数运行时错误时是健壮的。





放过错误:

对于上面这个程序最好能忽略不符合期望格式的数据航。如果split()方法调用导致一个异常,可以报告这是一个错误并使用pass继续执行代码。

不需要继续做些什么。

pass语句(可以把它认为是空语句或null语句)

for each_line in data:
	try:
		(role,line_spoken) = each_line.split(':',1)
		print(role,end='')
		print(' said:',end='')
		print(line_spoken,end='')
	except:
		pass



特定指定异常:

try:
	data = open('scatch.txt')
	for each_line in data:
		try:
			(role,line_spoken) = each_line.split(':',1)
			print(role,end='')
			print(' said:',end='')
			print(line_spoken,end='')
		except ValueError:
			pass
	data.close()
except IOError:
	print("The file is missing")

数据不符合期望的格式时会出现ValueError。

数据无法正常访问时会出现IOError(例如,可能你的数据文件已经被移走或者重命名)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值