Python读大数据txt


Posted in Python onMarch 28, 2016

如果直接对大文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。即通过yield。

    在用Python读一个两个多G的txt文本时,天真的直接用readlines方法,结果一运行内存就崩了。

    还好同事点拨了下,用yield方法,测试了下果然毫无压力。咎其原因,原来是readlines是把文本内容全部放于内存中,而yield则是类似于生成器。

代码如下:

def open_txt(file_name):
  with open(file_name,'r+') as f:
    while True:
      line = f.readline()
      if not line:
        return
      yield line.strip()

调用实例:

for text in open_txt('aa.txt'):
  print text

例二:

目标 txt 文件大概有6G,想取出前面1000条数据保存于一个新的 txt 文件中做余下的操作,虽然不知道这样做有没有必要但还是先小数据量测试一下吧。参考这个帖子:我想把一个list列表保存到一个Txt文档,该怎么保存 ,自己写了一个简单的小程序。
====================================================

import datetime
import pickle

start = datetime.datetime.now()
print "start--%s" % (start)

fileHandle = open ( 'train.txt' )
file2 = open('s_train.txt','w') 

i = 1
while ( i < 10000 ):
  a = fileHandle.readline()
  file2.write(''.join(a)) 
  i = i + 1

fileHandle.close() 
file2.close()

print "done--%s" % ( datetime.datetime.now() - start)

if __name__ == '__main__':
  pass

====================================================
pickle 这个库大家说的很多,官网看看,后面可以好好学习一下。

Python 相关文章推荐
跨平台python异步回调机制实现和使用方法
Nov 26 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
详解Python中的变量及其命名和打印
Mar 11 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python中几种导入模块的方式总结
Apr 27 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
对python append 与浅拷贝的实例讲解
May 04 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Python Lambda函数使用总结详解
Dec 11 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python 统计位数为偶数的数字代码详解
Mar 15 Python
Python常用的爬虫技巧总结
Mar 28 #Python
Python对数据库操作
Mar 28 #Python
Python字符串切片操作知识详解
Mar 28 #Python
python Django框架实现自定义表单提交
Mar 25 #Python
python Django批量导入数据
Mar 25 #Python
python Django批量导入不重复数据
Mar 25 #Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 #Python
You might like
PHP实现的简单分页类及用法示例
2016/05/06 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
JS实现简易计算器
2020/02/14 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
python爬虫常用的模块分析
2014/08/29 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
Python正则表达式和元字符详解
2018/11/29 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
解析Python3中的Import
2019/10/13 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
给女朋友的道歉信
2014/01/10 职场文书
借款担保书范文
2014/05/13 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
介绍信格式
2015/01/30 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
优质服务标语口号
2015/12/26 职场文书
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电