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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
Python全局变量用法实例分析
Jul 19 Python
python3编码问题汇总
Sep 06 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
PyTorch学习笔记之回归实战
May 28 Python
python使用folium库绘制地图点击框
Sep 21 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Python从列表推导到zip()函数的5种技巧总结
Oct 23 Python
Python Pandas读取Excel日期数据的异常处理方法
Feb 28 Python
Python使用openpyxl模块处理Excel文件
Jun 05 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
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
DOM 基本方法
2009/07/18 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
详解Python中time()方法的使用的教程
2015/05/22 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
Python中django学习心得
2017/12/06 Python
Python线性回归实战分析
2018/02/01 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
Python常用特殊方法实例总结
2019/03/22 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
如何在django中添加日志功能
2020/02/06 Python
为什么是 Python -m
2020/06/19 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
python 常见的反爬虫策略
2020/09/27 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
全球度假村:Club Med
2017/11/27 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
自荐信不宜过于夸大
2013/11/06 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
抽样调查项目计划书
2014/04/24 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏