python读取大文件内容_python 读取大文件
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 读取大文件相关推荐
- python修改文件内容_python批量修改文件夹及其子文件夹下的文件内容
前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据 ...
- python os读取文件内容_python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- python读取xml文件内容_python读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...
- python修改zip文件内容_python操作zip文件
转自: 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # 默认模式r,读 az ...
- python读取大文件内容_python读取大文件
python读取文件对各列进行索引 可以用readlines, 也可以用readline, 如果是大文件一般就用readlined={} a_in = open("testfile.txt& ...
- python读取word指定内容_python读取word 中指定位置的表格及表格数据
1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specT ...
- python读压缩文件内容_Python读写压缩文件的方法
问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...
- python查找文件内容_python自定义查找文件内容
#!/usr/bin/env python #coding:utf8 #此脚本为查找递归目录下所有文件匹配的内容 import os,sys,tab def paths(path): list_pat ...
- python替换文件内容_Python实现替换文件中指定内容的方法
本文实例讲述了Python实现替换文件中指定内容的方法.分享给大家供大家参考,具体如下: 这里使用python编写的程序,实现如下功能:将文件中的指定子串 修改为 另外的子串 编写的python程序, ...
最新文章
- android手机数字取证,基于Android智能终端微信应用的数字取证分析模型的研究
- Disucz!高级幻灯片制作
- 服务器报错:“/usr/local/var/run/nginx.pid”failed
- 如何获取MDC产品文档
- Ubuntu9.10 server 安装配置 vsftpd2.2.0 ftp服务器 并且 解决 putty 登陆 sshd 显示中文乱码
- 在星辰世界的guandan
- CREO - 基础3 - 用拉升的方法构建一个双轮胎模型
- anaconda安装PIL库报错:PIL库不存在的解决方法
- 如何使用Mac电脑内置的屏幕共享功能进行远程桌面协助?
- XueTr(PC Hunter) pro 注册分析
- web项目01-----项目需求分析,需求文档
- 陈强老师公开课笔记1——如何区别中介效应、调节效应与交互效应?
- PLINK-GWAS学习6------数据质控之杂合率质控
- android 自动连接WiFi
- 【封面】数字经济引领中国产业改革
- android新浪微博授权,新浪微博授权认证过程 - Android、iOS开发 - OSCHINA - 中文开源技术交流社区...
- 柳廷顯 任汝所用 月亭
- 论文阅读三:GHM《Gradient Harmonized Single-stage Detector》
- 离线环境使用vscode的remote-docker方式开发的环境搭建
- 20176408李俊 类与对象
热门文章
- python零基础入门建模_python基础教程之Python 建模步骤|python基础教程|python入门|python教程...
- c语言文件fputs和fgets,文件的读写问题,fputs和fgets问题!!!!
- mysql5.5在windows7下编译的详细步骤_Windows7下编译MySQL5.5的详细步骤
- 计算机机械应用,浅析计算机技术在机械自动化的应用(原稿)
- 鸿蒙 github harmony,鸿蒙HarmonyOS三方件开发指南-SwipeLayout侧滑删除
- c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx
- php管理员登录文件,使用PHP文件重置管理员密码(Drupal 8)
- elasticsearch的多索引联合查询以及范围日期查询示例
- linux下的ps aux | grep -c php-fpm 与netstat -napo |grep php-fpm | wc -l 命令
- 基于Pytorch再次解读ResNet现代卷积神经网络