我有一些文件名的列表
ListOfFiles = ['filename1.xlsm', 'filename2.xlsm',...]
我想做的是以自动方式加载这些文件。所以我写了以下内容:
from openpyxl import load_workbook
for i in LisOfFiles:
xl = load_workbook(ListOfFiles[i], read_only=True)
但是我得到了TypeError: list indices must be integers or slices, not str
我该如何解决?
您已经遍历列表。无需再次对其进行索引:
from openpyxl import load_workbook
for path in ListOfFiles:
xl = load_workbook(path, read_only=True)
编辑
请注意,在上面的代码中,每次都会重新分配xl
。这可能不是您想要的。
您可以在列表中捕获工作簿:
from openpyxl import load_workbook
workbooks = []
for path in ListOfFiles:
workbooks.append(load_workbook(path, read_only=True))
可以通过使用列表理解]来缩短::
:workbooks = [ load_workbook(path, read_only=True) for path in ListOfFiles ]
如果您希望能够通过文件名解决它们,请使用dict comprehension
workbooks = {
path: load_workbook(path, read_only=True)
for path in ListOfFiles
}
尝试在for循环print(i)
中打印i。基本上,您尝试使用字符串访问列表的元素。在第一次迭代中,这意味着i = 'filename1.xlsm'
转换为LisOfFiles['filename1.xlsm']