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中用于计算指数的exp()方法
May 14 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
Python zip()函数用法实例分析
Mar 17 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
python tkinter之 复选、文本、下拉的实现
Mar 04 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
Django Auth用户认证组件实现代码
Oct 13 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 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 正则表达式小结
2009/08/31 PHP
Laravel框架表单验证详解
2014/09/04 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
javascript 事件绑定问题
2011/01/01 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
最新教师自我评价分享
2013/11/12 职场文书
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
机械系大学毕业生推荐信
2013/11/27 职场文书
保护环境演讲稿
2014/05/10 职场文书
大型会议策划方案
2014/05/17 职场文书
学习党代会心得体会
2014/09/05 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
甲午大海战观后感
2015/06/02 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
mysql 带多个条件的查询方式
2021/06/05 MySQL