Try / Except - 如果发生异常,则执行停止。而真正创造无限循环

时间:2018-02-16 00:44:17

标签: python for-loop exception

我是Python的新手,如果这是一个微不足道的问题我很抱歉。谷歌搜索了几个小时没有成功。

我有一个代码,它从Excel文件中获取纬度/经度并使用API​​返回地址。

如果Excel单元格包含错误的Lat / Longs,则返回IndexError。在这种情况下,即使下一行包含正确的(可地定编码的)Lat / Longs,它也会停止执行。我尝试使用True,但它只是继续编写除Except之外的部分的结果。

E.g。 Excel具有以下列/值:

Lat        Long
38.872476 -77.062334
1          23.456789
38.873411 -77.060907

第1行有正确的Lat / Long,第2行不正确,第3行正确。在输出文件中,它显示第1行的地址,并为第2行显示“N / A”,但忽略第3行并停止执行。

try:
    for row in range(rows):
        row+=1
        latitude = float(sheet.row_values(row)[0])
        longitude = float(sheet.row_values(row)[1])
        reverse_geocode_result = gmaps.reverse_geocode((latitude, longitude))
        out_file.write("(" + str(latitude) + ", " + str(longitude) + ") location: " + str(reverse_geocode_result[1]['formatted_address']) + "\n")

except IndexError:
    out_file.write("N/A")
else:
    out_file.write("(" + str(latitude) + ", " + str(longitude) + ") location: " + str(reverse_geocode_result[1]['formatted_address']) + "\n")

print "Done."

1 个答案:

答案 0 :(得分:3)

我认为您希望将try放在for循环中。

for row in range(rows):
    try:
        # Get the values
    except IndexError:
        out_file.write("N/A")
    else:
        out_file.write(...)

print "Done."

这样,如果出现错误,您就会写"N/A",但之后可以继续range中的下一个元素。