qq_38269799
youngkun_FH
采纳率50%
2018-05-17 08:39 阅读 898

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

5

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条回答 默认 最新

  • 已采纳
    weixin_41350036 「已注销」 2018-05-17 08:45

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

    点赞 6 评论 复制链接分享
  • u012174752 宫商角徵羽的徵 2018-05-17 08:46

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

    点赞 5 评论 复制链接分享
  • qq_25720057 一起滚月球 2018-05-17 08:52

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

    点赞 1 评论 复制链接分享
  • qq_25720057 一起滚月球 2018-05-17 08:52

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

    点赞 1 评论 复制链接分享
  • BigFish123456789 BigFishisBig 2018-05-17 09:14

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

    点赞 1 评论 复制链接分享
  • nowandthen1998 nowandthen1998 2018-05-18 06:57

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

    点赞 评论 复制链接分享

相关推荐