import glob
import pandas as pd
from multiprocessing import Pool
def process_file(file):
"""读取Excel文件并返回数据和文件名"""
df = pd.read_excel(file)
fname = file.split("\")[-1].split(".")[0]
return df, fname
def main():
writer = pd.ExcelWriter('总结123.xlsx', engine='xlsxwriter')
flist = glob.glob(r".\result\*.xlsx")
# 使用多进程池来并行处理文件
with Pool() as pool:
results = pool.map(process_file, flist)
for df, fname in results:
df.to_excel(writer, sheet_name=fname, index=False)
writer._save()
if __name__ == "__main__":
main()
这里提供了一种基于多进程的解决方案。我们使用`multiprocessing`库的`Pool`类来并行读取Excel文件,以提高处理速度。在`process_file`函数中,我们读取每个Excel文件并返回数据和文件名。然后,在`main()`函数中,我们调用`Pool().map()`方法来并行处理文件列表。
注意:通过多进程可能并不能大幅度提升速度,特别是在I/O操作非常耗时的情况下。确保你的硬盘读写速度不成瓶颈,同时也可以尝试将Excel文件转换成其他更高效的格式进行处理。或者考虑使用批处理工具和其他支持直接读取和合并Excel文件的工具来提升效率。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |