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搭建微信公众平台
Feb 09 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
python使用代理ip访问网站的实例
May 07 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
python实现简单的文字识别
Nov 27 Python
python用for循环求和的方法总结
Jul 08 Python
Python for i in range ()用法详解
Sep 18 Python
python实现输入的数据在地图上生成热力图效果
Dec 06 Python
Python中threading库实现线程锁与释放锁
May 17 Python
python使用torch随机初始化参数
Mar 22 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php实现上传图片文件代码
2015/07/19 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
html下载本地
2006/06/19 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
Python发展史及网络爬虫
2019/06/19 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
pytorch中图像的数据格式实例
2020/02/11 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
python实现对变位词的判断方法
2020/04/05 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
《七颗钻石》教学反思
2014/02/28 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
男女朋友协议书
2014/04/23 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
mysql函数全面总结
2021/11/11 MySQL