影刀RPA CSV大文件的分批读写技巧

发布时间:2026/7/8 3:19:46
影刀RPA CSV大文件的分批读写技巧 影刀RPA CSV大文件的分批读写技巧作者林焱什么情况用这个用影刀内置的【读取CSV】指令处理几千行的小文件没问题但遇到几百万行的CSV时流程直接卡死——内存爆了。Excel最大1048576行CSV没有上限几十GB的CSV文件在数据行业很常见。分批处理是唯一解。不是一次读完再处理而是每次只读一小块处理完再读下一块。这篇文章给你三种分批读写方案从最简单的pandas分块到最硬核的行迭代。怎么做店群矩阵自动化突破运营极限方案一pandas的chunksize最推荐importpandasaspddefprocess_csv_in_chunks(filepath,chunk_size10000):分块读取CSV并处理total_rows0forchunk_num,chunkinenumerate(pd.read_csv(filepath,chunksizechunk_size)):# chunk是一个DataFrame最多chunk_size行rowslen(chunk)total_rowsrows ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/be0f9ab09f584866aa3bd2a289473f0a.png#pic_center)print(f处理第{chunk_num1}块{rows}行累计{total_rows}行)# 在这里处理这一块数据processedtransform_chunk(chunk)save_chunk(processed,chunk_num)print(f全部处理完成共{total_rows}行)方案二逐行读取最省内存defprocess_csv_line_by_line(filepath,batch_size1000):逐行读取攒够一批处理一批batch[]line_count0headerNonewithopen(filepath,r,encodingutf-8)asf:forlineinf:line_count1ifline_count1:headerline.strip()continuebatch.append(line.strip())iflen(batch)batch_size:process_batch(header,batch)print(f已处理{line_count-1}行)batch[]# 处理最后一批ifbatch:process_batch(header,batch)方案三只读取需要的列和行# 跳过不需要的行和列dfpd.read_csv(large.csv,usecols[订单号,金额,日期],# 只读3列nrows50000,# 只读前5万行skiprowslambdax:x%20,# 跳过奇数行如果需要采样![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dee466a1a4a04e6ba1aad47e868dc598.png#pic_center)dtype{订单号:str}# 指定列类型加速读取)有什么坑坑一编码检测不准现象用utf-8读大CSV到一半报编码错误——因为前面都是英文后面出现了中文。解决用chardet先检测编码或者直接用encodinggbk并设置errorsignore。坑二chunksize读到最后一块时没数据temu店群自动化报活动案例现象最后一块rows0但代码没判断往里写了空数据。解决每个chunk处理前检查if len(chunk) 0: break。坑三大文件写入时的性能问题现象逐行写入to_csv(modea)每次打开关闭文件慢得离谱。解决攒够一批1万行再写一次。或者用open()打开文件句柄后一直追加写。总结CSV大文件处理的口诀——一万以内直接读十万级别用chunksize百万级别逐行批次千万级别考虑转数据库。