如何输出程序发现索引错误的文本文件中的哪一行?

How to output which line in the textfile where the program found an Index error?

如何获取抛出异常的行?

def openfile(which_file): #Funktion som öppnar och läser den valda filen rad för rad
    with open(which_file, "r") as file:
        file_rows=file.readlines()
        passengers=[]
        for lines in file_rows:
            try:
                if lines !="\n":     #Här används klassen data_manager:
                    objekt=carclass.data_manager(lines.split()[0], lines.split()[1], lines.split()[2], lines.split()[9], lines.split()[13], lines.split()[-1])
                    passengers.append(objekt)
            except IndexError:
                print("Wrong registration at line") #WHICH LINE?
        return passengers

使用enumerate()索引行

with open(...) as fh:
    for index, line in enumerate(fh):
        ...

请注意

  • 类似文件的行已经是可迭代的,所以你不需要在使用它之前将整个文件读入内存(即。.readlines()
  • enumerate() 从零开始索引,而文件通常被称为从“第 1 行”开始,因此在显示时将索引加 1 通常很方便(或者给 enumerate 一个起始值 1,虽然这可能会导致更严重的混乱)

对于你的情况,这可能看起来像

passengers=[]
with open(which_file) as fh:
    for index, line in enumerate(fh):
        atoms = line.split()
        if not atoms or len(atoms) < 14:  # TBD
            print(f"error at line {index+1}: {line}")
        passengers.append(
            carclass.data_manager(
                atoms[0],
                atoms[1],
                atoms[2],
                atoms[9],
                atoms[13],
                atoms[-1]
            )
        )
return passengers