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

news/2024/11/19 20:27: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 pdreader = pd.read_csv('E:\Python学习\新建文件夹\新建文本文档.txt', sep=',', chunksize=10)for chunk in reader:df = chunkprint(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.ppmy.cn/news/12594.html

相关文章

Kruskal重构树学习笔记(C++)

Kruskal重构树学习笔记 提示: 学习Kruskal重构树之前建议先了解一下Kruskal算法,虽然不了解这个影响不会很大 但一定要了解一下并查集的算法 接下来如果想要应用Kruskal重构树,一定要了解一下LCA算法 什么是Kruskal重构树 这里先简单说…

Linux进程间通信

文章目录进程间通信介绍进程间通信的概念进程间通信的目的进程间通信的本质进程间通信的分类管道什么是管道匿名管道匿名管道的原理pipe函数匿名管道使用步骤管道读写规则管道的特点管道的四种特殊情况管道的大小命名管道命名管道的原理使用命令创建命名管道创建一个命名管道命…

第一个python程序

我们将看一下如何用Python编写运行一个传统的“Hello World”程序。通过它,你将学会如何编写、保存和运行Python程序。 有两种使用Python运行你的程序的方式——使用交互式的带提示符的解释器或使用源文件。 1.使用带提示符的解释器 在命令行的shell提示符下键入python,启动解释…

【Android笔记67】Android之使用系统中的相机功能(拍照、保存照片、显示拍摄的照片、照片保存到图库等操作)

这篇文章,主要介绍Android如何使用系统中的相机功能(拍照、保存照片、显示拍摄的照片、照片保存到图库等操作)。 目录 一、使用Android相机功能 1.1、如何调用相机功能 1.2、调用相机功能

Wav2Vec HuBert 自监督语音识别模型

文章目录Wav2Vec: Unsupervised pre-training for speech recognitionabstractmethodwav2vec 2.0: A Framework for Self-Supervised Learning of Speech RepresentationsabstractintroductionmethodMODEL arch损失函数finetuneexprimentHuBERT: Self-Supervised Speech Repres…

第三章 熟悉的气息

Died有些奇怪,这个游戏好像有哪里不对劲,对,比她输入的代码要多了很多。她的游戏……只是很简单的啊。 Died的虚拟世界里…… 一个人,看不清面容,笑着:“Died的数据传回来了吗?” Died准备休息一…

孤儿进程和僵尸进程

文章目录孤儿进程僵尸进程孤儿进程 定义 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程(Orphan Process)每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置…

修改jupyter notebook默认路径

修改jupyter notebook默认路径jupyter notebook默认打开C:\Users\你的用户名,用户名是你的电脑用户名,upload文件又会在C盘生成一堆文件,很乱,用notebook打开文件还要跳转到目录,很麻烦,那有没有办法呢&…