当资料量很大的时候 一次读进内存是很辛苦的事
若能一次读完进 速度原则上较快(但体感较慢)
而且 就是有机会读不进啊
就算这次读进了 难保下个档案更大(3000万?)
所以一般我们会先开启档案 需要资料时再读取使用
先确定找得到档案
x = open(....)
f = open(....)
之后不会直接readlines()
通通一次读进memory太操了
虽然档案小的时候较方便 较快速
通常会用
for xline in x:
#find column name
#make csv file name
#open csv file for write
for fline in f:
#check fline need write or not
#by using column name compare
#write csv file
这边其实是写进memory增加效能
但如果这里也太大也会出问题
可以在n个loop之间适时加入flush写回硬盘
确保内存不会用爆
file_name.flush()
file_name.close() #close csv file for saving to disk
要注意for过一次的f已经读到最尾端了
要让下个for再重跑f 要seek回最前端
f.seek(0) #让档案重头再读
最后要关档案养成好习惯
x.close()
f.close()
或一开始用with open() as f:之类的写法
程式逻辑怎么写 写对写错又是另一回事了 这里不多谈
用pandas也行 但这种大档又没效率要求的情况
一般python练练功真心觉得不错:D
以上供参考
有错请指正
※ 引述《meichiang (美江)》之铭言:
手边有一大笔资料 1千多万的资料
第一字段 为商品代码 之后字段为这商品的其
他资料 总共有一千多万笔资料 要将一个大的
csv档根据第一栏的商品代码 根据商品代码另
存为csv档
由于没写过程式 爬文慢慢写出 以下东西 但感觉错了 用小笔资料跑 明显的跑错只开了
根据商品别开csv 但csv内没读取到资料
https://i.imgur.com/Tl2oDh9.jpg