可以使用chunksize参数来控制每次读取的行数,并在读取每一块数据后立即将其写入文件,以减少内存占用。以下是修改后的代码示例:

folder_excelpath = 'F:/自动验单数据/4.5-5.5验本数据/'  # 路径
files = os.listdir(folder_excelpath)  # 获取路径下所有文件
excel_files = [f for f in files if f.endswith('.xlsx')]  # 筛选出所有后缀为.xlsx的文件
chunksize = 10000  # 每次读取的行数

writer = pd.ExcelWriter('F:/自动验单数据/4.5-5.5验本数据.xlsx', engine='xlsxwriter')  # 创建一个ExcelWriter对象

for file in excel_files:
    file_path = os.path.join(folder_excelpath, file)  # 获取文件的绝对路径
    for chunk in pd.read_excel(file_path, chunksize=chunksize):
        chunk.to_excel(writer, index=False, sheet_name='data', header=False)  # 将每一块数据写入同一个excel文件中的'data'工作表
        writer.save()  # 保存文件
        writer = pd.ExcelWriter('F:/自动验单数据/4.5-5.5验本数据.xlsx', mode='a', engine='xlsxwriter')  # 重新创建一个ExcelWriter对象,继续写入数据

writer.close()  # 保存文件

这样,每读取完一块数据就立即将其写入文件,并释放内存,可以减少内存占用。注意,在每次写入数据后,需要重新创建一个ExcelWriter对象,并使用mode='a'参数来添加数据,而不是覆盖原有数据

folder_excelpath = F自动验单数据45-55验本数据 # 路径files = oslistdirfolder_excelpath # 获取路径下所有文件excel_files = f for f in files if fendswithxlsx # 筛选出所有后缀为xlsx的文件data_frames = # 存储所有读取到的excel文件chunksize = 10

原文地址: https://www.cveoy.top/t/topic/iigf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录