使用 openpyxl 读取多个文件
Read multiple files using openpyxl
我有一个包含一些文件名的列表
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
我该如何解决?
尝试在 for 循环中打印 i print(i)
。基本上,您正在尝试使用字符串访问列表的元素。在第一次迭代中,这意味着
i = 'filename1.xlsm'
转换为
LisOfFiles['filename1.xlsm']
但是您只能访问带有数字的列表的元素,即 LisOfFiles[0]
可以正常工作。
解决办法是直接用i作为load_workbook的输入。但是请注意,在循环的每次迭代中 xl 都会被覆盖
for i in LisOfFiles:
xl = load_workbook(i, read_only= True)
您已经在遍历列表。无需再次索引:
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
]
如果您希望能够通过文件名寻址它们,请使用 字典理解:
workbooks = {
path: load_workbook(path, read_only=True)
for path in ListOfFiles
}
我有一个包含一些文件名的列表
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
我该如何解决?
尝试在 for 循环中打印 i print(i)
。基本上,您正在尝试使用字符串访问列表的元素。在第一次迭代中,这意味着
i = 'filename1.xlsm'
转换为LisOfFiles['filename1.xlsm']
但是您只能访问带有数字的列表的元素,即 LisOfFiles[0]
可以正常工作。
解决办法是直接用i作为load_workbook的输入。但是请注意,在循环的每次迭代中 xl 都会被覆盖
for i in LisOfFiles:
xl = load_workbook(i, read_only= True)
您已经在遍历列表。无需再次索引:
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
]
如果您希望能够通过文件名寻址它们,请使用 字典理解:
workbooks = {
path: load_workbook(path, read_only=True)
for path in ListOfFiles
}