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脚本
Sep 01 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
Python中为什么要用self探讨
Apr 14 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
Pytorch入门之mnist分类实例
Apr 14 Python
python 提取key 为中文的json 串方法
Dec 31 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
python系列 文件操作的代码
Oct 06 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Eclipse配置python默认头过程图解
Apr 26 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的开发框架的现状和展望
2007/03/16 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
php自定义时间转换函数示例
2016/12/07 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
JavaScript的Cookies
2008/01/16 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
Python中装饰器高级用法详解
2017/12/25 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
详解python中init方法和随机数方法
2019/03/13 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
节能环保口号
2014/06/12 职场文书
三好学生个人总结
2015/02/15 职场文书
出国留学单位推荐信
2015/03/26 职场文书
白银帝国观后感
2015/06/17 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python