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时区设置方法与pytz查询时区教程
Nov 27 Python
Django集成百度富文本编辑器uEditor攻略
Jul 04 Python
wxPython窗口的继承机制实例分析
Sep 28 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
python socket网络编程之粘包问题详解
Apr 28 Python
Python如何实现转换URL详解
Jul 02 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
Tensorflow 实现释放内存
Feb 03 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 Python
Python实现PS滤镜中的USM锐化效果
Dec 04 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采用curl实现伪造IP来源的方法
2014/11/21 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
Python 高级专用类方法的实例详解
2017/09/11 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
执行总经理岗位职责
2014/02/03 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
2016入党心得体会范文
2016/01/06 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技
TypeScript 内置高级类型编程示例
2022/09/23 Javascript