我想在特定文件夹中的文件列表上迭代,并按成对单词或三元组单词存储文件名。 我创建了以下代码:
for file_name in os.listdir(path):
file_name_aslist = file_name.split()
o = [(file_name_aslist[x], file_name_aslist [x+1]) for x in range(0, len(file_name_aslist ), 2)]
它返回以下错误:
IndexError: list index out of range
表达式在单个列表中工作,但不希望在循环中工作: 例如:
list = ['ra', 'ti', 'kaa', 'esss', 'fm', 'am']
print([(list[x], list[x+1]) for x in range(0, len(list), 2)])
[('ra', 'ti'), ('kaa', 'esss'), ('fm', 'am')]
另外,当我尝试迭代三元组时,也要拒绝
print([(list[x], list[x+1], list[x+2]) for x in range(0, len(list), 3)])
IndexError: list index out of range
您正在将文件的名称按“”分隔(空格):
拆分后,您无法确保所有文件的字数都超过1个
你能做什么:
输出:
当列表的长度不是2的倍数时,只需添加一个if条件,在列表中附加一个额外的空字符串以使其相等。 三胞胎也一样。您必须添加一个或两个字符串
第一件事:在使用“单一列表”的示例中,
list
不一定代表原始的file_name_aslist
。如果文件名不包含空格,file_name_aslist
将是一个包含单个元素的列表,即文件名本身。对于这些情况,很容易验证file_name_aslist [x+1]
为什么会抛出IndexError
你真的期望
file_name_aslist
是一个包含多个元素的列表吗?您是否正在尝试按其他条件进行拆分,例如.
(可能按文件扩展名进行拆分,这也是一种不好的方法)相关问题 更多 >
编程相关推荐