IndexError:列表索引超出范围..尽管在范围内?

时间:2020-05-04 04:27:53

标签: python tensorflow error-handling path index-error

在此先感谢您的帮助。

我遇到了以下代码段的问题:

category = path.split("/")[3]
label = int(category.split("_")[0][1]) 
y.append(label)

错误如下:IndexError:列表索引超出范围。当我进行拆分时,错误出现在第一行。我(认为)我理解错误的含义,但是当我执行len(path)时,我得到33 ...所以[3]应该不会出问题。

我测试了以下代码片段,以更好地理解拆分:

txt = "welcome to the jungle"
x = txt.split()[2]
print(x)

对于上面的代码,输出与预期的[2]项一样是“ the”。

现在,当我运行时回到我的代码:

x = path.split()
print(x)

我得到以下输出:

['.\\00\\01_palm\\frame_00_01_0001.png']

我遇到问题的代码来自我在本地计算机(Jupyter)上重新创建的公共GitHub项目。当我在Google Colab上运行同一项目时,我没有任何问题。但是当我在本地执行此操作时,就会遇到此问题。

问题1)有人可以向我解释代码为何使用:path.split(“ /”)[3]吗?为什么是“ /”?从输出中看到的实际路径只有“ \”,“ /”是否还意味着其他内容?抱歉,我是python的新手。

问题2)如何解决“ IndexError:列表索引超出范围”?

谢谢

1 个答案:

答案 0 :(得分:1)

从代码中可以清楚地看出,在Github上,它的路径是针对Linux的机器,而其路径分隔符是/,但是您正在windows上运行它其路径分隔符为\\,因此您必须将代码修改为

category = path.split("\\")[3]
label = int(category.split("_")[0][1]) 
y.append(label)

对于任何机器,如果您想查看路径分隔符,则可以

import os
print(os.path.sep)

对于Linux系统,输出为:

/