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之yield表达式学习
Sep 02 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
详解Python中的文件操作
Aug 28 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
分享vim python缩进等一些配置
Jul 02 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
python多个模块py文件的数据共享实例
Jan 11 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
python 直接赋值和copy的区别详解
Aug 07 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
全面解析JavaScript Module模式
2020/07/24 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python