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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
深入理解Django中内置的用户认证
Oct 06 Python
mac系统安装Python3初体验
Jan 02 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
python多进程读图提取特征存npy
May 21 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
python开发制作好看的时钟效果
May 02 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实现json编码的方法
2015/07/30 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php分页查询的简单实现代码
2017/03/14 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
List the Codec Files on a Computer
2007/06/18 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript之数组(Array)详解
2015/04/01 Javascript
domReady的实现案例
2016/11/23 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
小学毕业感言500字
2014/02/28 职场文书
体育教师求职信
2014/06/30 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
实现一个简单得数据响应系统
2021/11/11 Javascript
公历12个月名称的由来
2022/04/12 杂记