readlines、read()、readline()等一次性读取遇到很大的文件都可能面临内存崩溃,所以我们将读取操作细化一点

1. read(size) + yield

固定每次读取的长度,使用生成器返回

def read_file1(file='articles.txt'):

time.sleep(1)

block_size = 1024

with open(file, 'r', encoding='utf-8') as f:

while True:

block = f.read(block_size)

if block:

yield block

else:

break

2. for line in

迭代遍历,这个方法会自动地使用缓冲IO(buffered IO)以及内存管理,但是如果大量数据都在一行还是会出状况

def read_file2(file='articles.txt'):

with open(file, 'r', encoding='utf-8') as f:

for line in f:

print(line)

3. buff机制

对于所有数据都在一行的话,用for line in不仅仅没法处理而且获取数据的时候也没法获取到有效内容,这一行数据里明显会包含换行符、分隔符等,这个时候我们就可以自建一个buff管理来处理数据了,将每一次读取的内容加入缓存,对分隔符做处理后下次就从这之后依次处理

def read_file3(split_str, size, file='articles.txt', ):

with open(file, 'r', encoding='utf-8') as f:

buff = "" #定义缓冲区

while True:

print("buff:", buff)

while split_str in buff: #若分隔符在缓冲区内

print("捕捉到分隔符", buff)

position = buff.index(split_str) #查找分隔符第一次出现的索引

yield buff[:position] #返回从初始索引到次索引之间的缓冲区内容

buff = buff[position + len(split_str):] #更新缓冲区,除去分隔符以及之前的内容

chunk = f.read(size) #缓冲区内无分隔符则读取size个字符

if chunk: #读取到内容,将内容添加到缓冲区

buff += chunk

else:

yield buff #没读取到内容,退出循环

break

python读取大文件内容_python 读取大文件相关推荐

  1. python修改文件内容_python批量修改文件夹及其子文件夹下的文件内容

    前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据 ...

  2. python os读取文件内容_python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  3. python读取xml文件内容_python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...

  4. python修改zip文件内容_python操作zip文件

    转自: 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # 默认模式r,读 az ...

  5. python读取大文件内容_python读取大文件

    python读取文件对各列进行索引 可以用readlines, 也可以用readline, 如果是大文件一般就用readlined={} a_in = open("testfile.txt& ...

  6. python读取word指定内容_python读取word 中指定位置的表格及表格数据

    1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specT ...

  7. python读压缩文件内容_Python读写压缩文件的方法

    问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...

  8. python查找文件内容_python自定义查找文件内容

    #!/usr/bin/env python #coding:utf8 #此脚本为查找递归目录下所有文件匹配的内容 import os,sys,tab def paths(path): list_pat ...

  9. python替换文件内容_Python实现替换文件中指定内容的方法

    本文实例讲述了Python实现替换文件中指定内容的方法.分享给大家供大家参考,具体如下: 这里使用python编写的程序,实现如下功能:将文件中的指定子串 修改为 另外的子串 编写的python程序, ...

最新文章

  1. android手机数字取证,基于Android智能终端微信应用的数字取证分析模型的研究
  2. Disucz!高级幻灯片制作
  3. 服务器报错:“/usr/local/var/run/nginx.pid”failed
  4. 如何获取MDC产品文档
  5. Ubuntu9.10 server 安装配置 vsftpd2.2.0 ftp服务器 并且 解决 putty 登陆 sshd 显示中文乱码
  6. 在星辰世界的guandan
  7. CREO - 基础3 - 用拉升的方法构建一个双轮胎模型
  8. anaconda安装PIL库报错:PIL库不存在的解决方法
  9. 如何使用Mac电脑内置的屏幕共享功能进行远程桌面协助?
  10. XueTr(PC Hunter) pro 注册分析
  11. web项目01-----项目需求分析,需求文档
  12. 陈强老师公开课笔记1——如何区别中介效应、调节效应与交互效应?
  13. PLINK-GWAS学习6------数据质控之杂合率质控
  14. android 自动连接WiFi
  15. 【封面】数字经济引领中国产业改革
  16. android新浪微博授权,新浪微博授权认证过程 - Android、iOS开发 - OSCHINA - 中文开源技术交流社区...
  17. 柳廷顯 任汝所用 月亭
  18. 论文阅读三:GHM《Gradient Harmonized Single-stage Detector》
  19. 离线环境使用vscode的remote-docker方式开发的环境搭建
  20. 20176408李俊 类与对象

热门文章

  1. python零基础入门建模_python基础教程之Python 建模步骤|python基础教程|python入门|python教程...
  2. c语言文件fputs和fgets,文件的读写问题,fputs和fgets问题!!!!
  3. mysql5.5在windows7下编译的详细步骤_Windows7下编译MySQL5.5的详细步骤
  4. 计算机机械应用,浅析计算机技术在机械自动化的应用(原稿)
  5. 鸿蒙 github harmony,鸿蒙HarmonyOS三方件开发指南-SwipeLayout侧滑删除
  6. c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx
  7. php管理员登录文件,使用PHP文件重置管理员密码(Drupal 8)
  8. elasticsearch的多索引联合查询以及范围日期查询示例
  9. linux下的ps aux | grep -c php-fpm 与netstat -napo |grep php-fpm | wc -l 命令
  10. 基于Pytorch再次解读ResNet现代卷积神经网络