如何输出程序发现索引错误的文本文件中的哪一行?
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
如何获取抛出异常的行?
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