我在Python中处理一些半结构化文档,我有一些代码将文件读入一个元组并循环遍历每一行并执行一个函数。有没有办法在处理过的文件中找到遇到错误的确切行?
c = tuple(open("file", 'r'))
for element in c:
if (condition is met):
do something
else:
do something else
结果应为:
Error: in line # of "file"
答案 0 :(得分:3)
enumerate
应该有所帮助:
for line, element in enumerate(c):
try:
if (condition is met):
do something
else:
do something else
except Exception as e:
print('got error {!r} on line {}'.format(e, line))
上面会出现如下错误:
got error OSError('oops!',) on line 4
虽然作为一种良好做法,您通常会将Exception
替换为您期望捕获的任何错误。
答案 1 :(得分:1)
通常,在从文件中读取时使用with
关键字是一种好习惯,尤其是在您希望发生异常时。您还可以enumerate
计算行数:
with open(filename) as f:
for line_num, line in enumerate(f):
try:
if (condition is met):
do something
else:
do something else
except Exception:
print('Error: in line {:d} of file'.format(line_num))
如果您知道您期望的特定例外,最好不要使用Exception
,因为它会捕获所有异常,即使是您不期望的异常。