Python 在处理文件时查找异常的位置
我正在用Python处理一些半结构化文档,我有一些代码可以将文件读入元组,循环每一行并执行一个函数。有没有办法在处理过的文件中找到遇到错误的确切行Python 在处理文件时查找异常的位置,python,exception,exception-handling,Python,Exception,Exception Handling,我正在用Python处理一些半结构化文档,我有一些代码可以将文件读入元组,循环每一行并执行一个函数。有没有办法在处理过的文件中找到遇到错误的确切行 c = tuple(open("file", 'r')) for element in c: if (condition is met): do something else: do something else 结果应该是: 错误:“文件”的第#行 应该有助于: for line, element
c = tuple(open("file", 'r'))
for element in c:
if (condition is met):
do something
else:
do something else
结果应该是:
错误:“文件”的第#行
应该有助于:
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
虽然作为一种良好的做法,您通常会用您希望捕获的任何错误来替换异常。应该有帮助:
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
虽然作为一种好的做法,您通常会用您希望捕获的任何错误替换异常
。一般来说,在读取文件时使用with
关键字是一种好的做法,尤其是当您预期会发生异常时。您还可以枚举
来计算行数:
打开(文件名)为f时:
对于行数,枚举(f)中的行:
尝试:
如果(满足条件):
做点什么
其他:
做点别的
除例外情况外:
打印('Error:在文件的第{:d}行中)。格式(第_num行))
如果您知道所期望的特定异常,最好不要使用异常
,因为它将捕获所有异常,即使是您不期望的异常。一般来说,在读取文件时,最好使用with
关键字,尤其是当您期望发生异常时。您还可以枚举
来计算行数:
打开(文件名)为f时:
对于行数,枚举(f)中的行:
尝试:
如果(满足条件):
做点什么
其他:
做点别的
除例外情况外:
打印('Error:在文件的第{:d}行中)。格式(第_num行))
如果您知道所期望的特定异常,最好不要使用Exception
,因为它将捕获所有异常,即使是您不期望的异常。好吧,您正在文件的行上循环,因此您可以对enumerate(c,start=1)中的行编号执行:
异常不携带局部变量,更不用说像TextIOWrapper
内部的其他状态了,更不用说像行号一样根本不存在的内部状态了。但是你可以很容易地自己添加它。好吧,你正在文件的行上循环,这样你就可以对枚举(c,start=1)中的行数执行:
异常不携带局部变量,更不用说像TextIOWrapper
的内部状态了,更不用说像行号一样不存在的内部状态了。但是您可以自己轻松地添加它。我可以使用{!r}
或者手动将异常类型抛出到错误中。当您收到一条关于异常的日志消息并且不得不猜测它是什么类型时,这是令人沮丧的。(除此之外,答案很好。)我要么使用{!r}
,要么手动将异常类型抛出到错误中。当您收到一条关于异常的日志消息并且不得不猜测它是什么类型时,这是令人沮丧的。(除此之外,答案很好。)