如何用python排序大文件的csv文件

Pory 2015-04-01 10:05:02
希望对csv的第一个类目做升序排列,csv文件有接近600M,如果直接将所有条目装进list,然后排序会出现内存不够的提示,求解决方法?
...全文
332 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2015-04-16
  • 打赏
  • 举报
回复
list 排序是生成新 list,内存占用更大,所以考虑是改用映射方式或者缩减 list 的容量 1.转换思维,逐行读入,提取要排序内容,舍弃无关排序内容;排序,然后再次逐行对比排序后内容,输出 2.转换成SQL 3.尝试pandas/numpy等
旋转的胖子 2015-04-16
  • 打赏
  • 举报
回复
分割文件为多个小文件,开启多线程依次对每个小文件读取放到数据库,在数据库里面排序好了,再读出来,保存成CSV. 个人觉得这样: 1.分割成小文件,处理每个文件的时候,占用内存比较小 2.多线程处理速度快 3.数据库比较擅长排序,如果用python的列表排序,都要读入内存,太占内存了.
thomashtq 2015-04-14
  • 打赏
  • 举报
回复
可以采用外排序法: 切成小文件 + 归并排序了
nieoding 2015-04-10
  • 打赏
  • 举报
回复
1.尝试一下用Pywin32里面excel的接口去做一下排序,它是用微软底层接口的排序。 2.导入到数据库排序。
swjtutipo 2015-04-02
  • 打赏
  • 举报
回复
参考如何将大量数据放入有限内存 http://python.jobbole.com/80753/#comment-91788
shiter 2015-04-02
  • 打赏
  • 举报
回复
这个能不能做一个内存映射啥 ,我瞎猜的。。。
乔巴好萌 2015-04-01
  • 打赏
  • 举报
回复
1) 加内存,能加物理内存最好,加不了上swap分区。 2)借鉴外排序的机制,http://baike.baidu.com/link?url=-XPef-vDS2hgE9V19wg5PmGTWblLjxuOgotWILJMSYC8zqD2Ev4eT36seyG3b2W3hzR3pSCGSCW5FDJTIo9a6a 你可以随机读取csv文件中的一个条目,小于这个条目的先被排序,结果写入到外部硬盘,大于此条目的再排序,写入硬盘,对2者的结果做归并排序即可。

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧