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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
Python变量类型知识点总结
Feb 18 Python
python中嵌套函数的实操步骤
Feb 27 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
详解python播放音频的三种方法
Sep 23 Python
python TCP包注入方式
May 05 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
Python jieba库分词模式实例用法
Jan 13 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue的mixins属性详解
2018/03/14 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
vant实现购物车功能
2020/06/29 Javascript
centos6.4下python3.6.1安装教程
2017/07/21 Python
python实现外卖信息管理系统
2018/01/11 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
python操作excel让工作自动化
2019/08/09 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
波兰汽车配件网上商店:iParts.pl
2020/09/08 全球购物
法人授权委托书
2014/04/03 职场文书
音乐教师求职信范文
2015/03/20 职场文书
商场圣诞节活动总结
2015/05/06 职场文书