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脚本对Linux服务器进行监控的教程
Apr 02 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
详解python的ORM中Pony用法
Feb 09 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 Python
Selenium元素的常用操作方法分析
Aug 10 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
Python中相见恨晚的技巧
Apr 13 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判断变量类型常用方法
2012/04/24 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
PDO实现学生管理系统
2020/03/21 PHP
Open and Print a Word Document
2007/06/15 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Django 请求Request的具体使用方法
2019/11/11 Python
tornado+celery的简单使用详解
2019/12/21 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
大学生创业计划书的用途
2014/01/08 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
python_tkinter事件类型详情
2022/03/20 Python
详解SQL的窗口函数
2022/04/21 Oracle