已解决Python读取20GB超大文件内存溢出报错MemoryError

news2024/10/6 5:55:21

已解决Python读取20GB超大文件内存溢出报错MemoryError






文章目录

  • 报错问题
  • 报错翻译
  • 报错原因
  • 解决方法1
  • 解决方法2(推荐使用)
  • 帮忙解决





报错问题



日常数据分析工作中,难免碰到数据量特别大的情况,动不动就2、3千万行,如果直接读进 Python 内存中,且不说内存够不够,读取的时间和后续的处理操作都很费劲。最近处理文本文档时(文件约20GB大小),出现memoryError错误和文件读取太慢的问题,报错代码如下:

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

        json_list = f.readlines()


报错信息如下

MemoryError



报错翻译



报错翻译如下:内存错误




报错原因



报错原因

这种方式是将文件里面所有内容按行读取到一个大列表中,对于小文件,这种方式其实挺方便,但对于大文件就会出现内存可能不足的情况,报 MemoryError 错误,或者消耗掉很客观的内存资源。小伙伴按下面的方法解决任选其一即可!!!





解决方法1



pandas.read_csv 参数 chunksize 通过指定一个分块大小(每次读取多少行)来读取大数据文件,可避免一次性读取内存不足,返回的是一个可迭代对象 TextFileReader


import pandas as pd

reader = pd.read_csv('E:\Python学习\新建文件夹\新建文本文档.txt', sep=',', chunksize=10)

for chunk in reader:
    df = chunk
    print(type(df), df.shape)



解决方法2(推荐使用)


EmEditor介绍: 简单好用的文本编辑器,支持多种配置,自定义颜色、字体、工具栏、快捷键设置,可以调整行距,避免中文排列过于紧密,具有选择文本列块的功能(按ALT键拖动鼠标),并允许无限撤消、重做,总之功能多多,使用方便,是替代记事本的最佳编辑器。我使用的EmEditor的分割功能,将20G的json文件按行分割为10个小文件。


EmEditor下载地址:https://zh-cn.emeditor.com/#download

(1)安装完成后,找到工具 》 点击分割文件:


在这里插入图片描述

(2)指定分割的行数(以多少行分割成一个新文件),然后点击下一页:


在这里插入图片描述


(3)默认即可接着一直点击下一页:
在这里插入图片描述


(4)分割完成,点击完成:
在这里插入图片描述


5)找到对应的文件,把json文件分割为10小份(这个是写文章之前分割的):


在这里插入图片描述

帮忙解决

本文已收录于:《告别Bug专栏》,欢迎免费订阅!!!

本专栏用于记录学习和工作中遇到的各种疑难编程Bug问题,以及粉丝群里小伙伴提出的各种问题,文章形式:报错代码 + 报错翻译 + 报错原因 + 解决方法,包括程序安装、运行程序过程中遇到的等等问题,博主心愿:让天下没有难学的编程,从此告别Bug!!!

订阅专栏 + 关注博主后,扫描下方二维码进全栈学习互助交流群可以帮忙解决问题,并且可以免费领取300本IT电子书籍、学习资料、简历模板、面试题库,和小伙伴们交流学习、抱团取暖,共同进步!!!

资料获取 | 技术交流 | 抱团学习 | 咨询分享 请点击下方名片后扫描二维码

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统进程调度算法

进程调度 高级调度(作业调度):按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时会撤销PCB。 中级调度(内存调度…

【历史上的今天】1 月 16 日:互联网工程任务组(IETF)成立;AMD 收购 NexGen;eBay 的第一位员工出生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 1 月 16 日,在 26 年前的今天,国家电力公司组建成立。电力是运作着我们生活的基本,国家电力公司成立于 1997 年 1 月 16 日…

《深度学习入门基于python的理论与实现》chap2感知机 笔记

《深度学习入门:基于python的理论与实现》chap2 感知机 笔记 3个月前正式开始入坑AI的时候就是看的这本书,当时比较粗略地看到了第六章,没有记笔记,现在来重温一下 文章目录《深度学习入门:基于python的理论与实现》chap2 感知机 笔记2.1 什么…

【阶段四】Python深度学习05篇:深度学习项目实战:卷积神经网络的定义、卷积网络的结构与卷积层的原理

本篇的思维导图: 卷积神经网络的定义 卷积神经网络,简称为卷积网络,与普通神经网络的区别是它的卷积层内的神经元只覆盖输入特征局部范围的单元,具有稀疏连接(sparse connectivity)和权重共享(weight shared)的特点,而且其中的过滤器可以做到对图像关键特征的…

基于Power BI的品牌销售金额帕累托分析

一、原理 帕累托于1906年提出了著名的关于意大利社会财富分配的研究结论:20%的人口掌握了80%的社会财富。这个结论对大多数国家的社会财富分配情况都成立。因此,该法则又被称为80/20法则。 二、数据源 已知某终端表1《商品信息》…

GO 语言 Web 开发实战一

xdm,咱今天分享一个 golang web 实战的 demo go 的 http 包,以前都有或多或多的提到一些,也有一些笔记在我们的历史文章中,今天来一个简单的实战 HTTP 编程 Get 先来一个 小例子,简单的写一个 Get 请求 拿句柄 设置…

VMware Workstation 17 Pro的下载和安装

目录 一、下载 二、安装 三、检查网络连接 方式一(简便版) 方式二(麻烦版) 一、下载 下载地址: Windows 虚拟机 | Workstation Pro | VMware | CN 1、进入该网址后,往下翻,有两个选项&…

并查集是什么?怎么模拟实现?如何应用?

目录 一、什么是并查集? 二、并查集可以解决哪些问题? 三、并查集的模拟实现 3.1、并查集的定义 3.2、查询两个元素是否是同一个集合 3.3、合并两个集合 3.4、求集合个数 3.5、并查集完整代码 小结 一、什么是并查集? 我们可以想象这…

九、MySQL 常用函数汇总(2)

文章目录一、条件判断函数1.1 IF(expr,v1,v2)函数1.2 IFNULL(v1,v2)函数1.3 CASE函数二、系统信息函数2.1 获取MySQL版本号、连接数和数据库名的函数2.2 获取用户名的函数2.3 获取字符串的字符集和排序方式的函数2.4 获取最后一个自动生成的ID值的函数三、加密函数3.1 加密函数…

东宝商城项目(三)——用户注册功能的实现(后端)

本文是我做项目过程中记录的学习笔记,用于记录项目开发流程,第一次做项目有很多不懂的地方,本文可读性暂时很差。 我目前的学习目标是走完项目开发流程,知道独立开发一个项目并让项目上线需要经历哪些步骤,需要学到哪些…

java.util.ConcurrentModificationException: null异常

创作背景:在加强for循环中使用了remove操作 原因: 在官方文档中ConcurrentModificationException的介绍如下: public class ConcurrentModificationException extends RuntimeException 某个线程在 Collection 上进行遍历时,通…

Spring入门-IOC/DI注解管理与整合mybatis及Junit(2)

1,核心容器 前面已经完成bean与依赖注入的相关知识学习,接下来我们主要学习的是IOC容器中的核心容器。 这里所说的核心容器,大家可以把它简单的理解为ApplicationContext,前面虽然已经用到过,但是并没有系统的学习&a…

1.15日报

完成font.css global.css login.vue request.js 今天完成了前端与后端的联通,并成功响应请求。返回登录成功欣喜。 遇到的问题: 我的body设置了: margin:0; padding:0; 但是页面四周还有白色留边。原因:body设置无边框了&a…

用Scipy理解Gamma函数

文章目录Gamma函数对数Gamma函数复数域的Gamma函数Gamma函数 Γ\GammaΓ函数是阶乘的解析延拓,在概率论中非常常见,例如Gamma分布表示某个事件在某个时刻发生第nnn次的概率:Gamma分布详解 Γ\GammaΓ函数显含在Γ\GammaΓ分布中,其…

linux基本功系列之pwd命令实战

本文目录 文章目录一. pwd命令介绍二. 语法格式及常用选项2.1 语法格式2.2 常用参数三. 参考案例3.1 显示所在目录的完整路径3.2 显示符号链接的路径 -P 参数3.3 查看上一次所在的工作目录3.4 查看PWD的版本四. pwd的命令类型总结前言🚀🚀🚀 …

7、redis数据库jedis省份缓存案例

Redis 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起…

IO流练习(三)

1.编程题 Homework01.java (1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp (2)在e:\\mytemp目录下,创建文件hello.txt (3)如果hello.txt已经存在,提示该文件已经存在,就不要再重复创建了。 (4)并且在hello.tx…

Java加解密(八)数字证书

目录数字证书1 定义2 证书组成结构3 公钥基础设施(PKI)3.1 PKI的组成3.2 PKI的相关标准3.3 信任模型4 证书的应用场景5 证书链6 生成证书6.1 通过CA生成可信证书6.1.1 国际权威认证机构6.1.2 生成CSR6.1.2.1 使用XCA生成CSR6.1.2.2 使用OpenSSL生成CSR6.…

每日一题-力扣(leetcode)2059. 转化数字的最小运算数

传送门 题目描述 给你一个下标从 0 开始的整数数组 nums ,该数组由 互不相同 的数字组成。另给你两个整数 start 和 goal 。 整数 x 的值最开始设为 start ,你打算执行一些运算使 x 转化为 goal 。你可以对数字 x 重复执行下述运算: 如果…

AtCoder Beginner Contest 284解题报告(A-D)

A - Sequence of Strings Problem Statement You are given N strings S1​,S2​,…,SN​ in this order. Print SN​,SN−1​,…,S1​ in this order. Constraints 1≤N≤10N is an integer.Si​ is a string of length between 1 and 10, inclusive, consisting of lowe…