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中的测试模块unittest和doctest的使用教程
Apr 14 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
Django如何继承AbstractUser扩展字段
Nov 27 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中取得URL的根域名的代码
2011/03/23 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
js window.event对象详尽解析
2009/02/17 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
基于Python log 的正确打开方式
2018/04/28 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
params有什么用
2016/03/01 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
销售经理工作检讨书
2015/02/19 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
MySQL 如何设计统计数据表
2021/06/15 MySQL
Python道路车道线检测的实现
2021/06/27 Python
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL
设置IIS Express并发数
2022/07/07 Servers