python中的for循环的一个error?请大神帮忙解答

for i in files:
if files[i] == images[i] :
output_dir =labels[i]
output_dir_path = output_dir+'.txt'
if not os.path.exists("./output_dir_path"):
os.makedirs(output_dir_path)
print("ok")
报错如下
if files[i] == images[i] :
TypeError: list indices must be integers or slices, not str

6个回答

应该是for i in range(len(files))

qq_38269799
youngkun_wtu 非常谢谢你,初学python
一年多之前 回复

是i的问题,列表的索引只能是整数或者切片,但是你的i in files 是str,请检查你的i到底是什么

如果files="abcd",那么你每次循环得到的i的值是 'a','b','c','d',而不是1,2,3,4,懂了吧
所以应该改为 for i in range(len(files)) 就是楼上说的

应该是 0,1,2,3.。。。。。说错了

for。。in。。 适用于字符串方面的遍历,如for i in files得到的i一般是str,for i in range num则可得到小于num的数字,而你的代码里面的序列的下标不能是str只能是数字,所以报错

for i in range(len(files))
遇到这种问题你可以自己在for下面print一下看i是什么

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问