folder_excelpath = F自动验单数据45-55验本数据 # 路径files = oslistdirfolder_excelpath # 获取路径下所有文件excel_files = f for f in files if fendswithxlsx # 筛选出所有后缀为xlsx的文件data_frames = # 存储所有读取到的excel文件chunksize = 10
可以使用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'参数来添加数据,而不是覆盖原有数据
原文地址: https://www.cveoy.top/t/topic/iigf 著作权归作者所有。请勿转载和采集!