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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
python list转矩阵的实例讲解
Aug 04 Python
Python读取指定日期邮件的实例
Feb 01 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
Python如何获取文件指定行的内容
May 27 Python
python用分数表示矩阵的方法实例
Jan 11 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
google地图的路线实现代码
2009/08/20 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
python中的计时器timeit的使用方法
2017/10/20 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
公积金转移接收函
2014/01/11 职场文书
小学学校评估方案
2014/06/08 职场文书
公司离职证明范本
2014/10/17 职场文书
考研复习计划
2015/01/19 职场文书
工作检讨书大全
2015/01/26 职场文书
财务部岗位职责
2015/02/03 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
致青春观后感
2015/06/09 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL