Re: [问题] 完全新手问题 有关csv产出

楼主: KSJ (阿真)   2018-09-22 13:19:21
当资料量很大的时候 一次读进内存是很辛苦的事
若能一次读完进 速度原则上较快(但体感较慢)
而且 就是有机会读不进啊
就算这次读进了 难保下个档案更大(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
作者: shadowfu (shadow)   2017-09-22 01:27:00
可以改用pandas的dataframe来做 可能会好做一点
作者: jackwang01 (艾斯比那)   2017-09-22 01:47:00
你的y是有csv副档名的,if y in fcolumn1可能找不到东西?
作者: meichiang (美江)   2017-09-22 02:15:00
有好的解决方法吗?如果一次跑太多笔资料 要怎么防呆
作者: jackwang01 (艾斯比那)   2017-09-22 02:19:00
把y改成column1应该就行了? 不知道你想做的是不是这样
作者: DChun (Ding)   2017-09-22 11:25:00
可以试看看pandas
作者: fgghhg (fgghhg)   2017-09-22 12:27:00
跑不了是跑不完吗?还是跑完没结果?这不一样这写法是全部都读到memory做,一千多万笔是有点多,有可能吃不下,还要看一笔有多大

Links booklink

Contact Us: admin [ a t ] ucptt.com