在处理文件时找出异常的位置

时间:2018-03-20 22:59:43

标签: python exception exception-handling

我在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"

2 个答案:

答案 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,因为它会捕获所有异常,即使是您不期望的异常。