如何使用Python读取大文件?

1

我先假设题主问的大文件在1G~20G左右,这应该算常规的大文件。平常我在做机器学习模型时候我喜欢先在本机上做玩具模型,里面有个步骤就是经常要读取文件数据,也差不多这么一个数据量。

一般来说,Python读取大文件的方式可以使用原生的open函数或者pandas的read_csv函数都可以达到目的。

open函数

Python读取文件一般是用open函数读取,例如f=open(xx,"r")后f.read()就可以轻松读取到文本内容。

2

这里以读取txt大文件为例,简单介绍一下Python是如何读取大文件的,系统内存在8G左右,txt文件的大小为5G,实验环境win10+python3.6+pycharm2018,主要内容如下:

1.首先,按照最原始的方法读取txt文件,即用open函数直接打开txt文件,一次将所有数据读入到内存中,这里如果文件大于系统运行内存,会直接报Memery Error错误,测试代码如下,非常简单:

运行这个程序,读取花费时间大概在41s左右,如下:

3

之前使用Python读取超大CSV文件时,出现MemoryError错误,甚至死机。。。呕心沥血潜心研究后,发现使用pandas的read_csv模块通过分块读取,可以完美解决针对超大CSV文件进行数据分析处理时的内存不足问题,分享一下。

pandas 安装

Anaconda是一个开源的Python发行版本,其包含了conda、Python、numpy、pandas等180多个科学包及其依赖项。建议直接安装Anaconda2 或 Anaconda3 ,最好装64位。

下载地址如下:

https://www.anaconda.com/

read_csv官方文档链接:

http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table

从官方文档中我们注意到chunksize 、iterator两个参数,下面我们就这两个参数做详细介绍 。

4

慢慢处理!你说的宽泛。

5

使用while 循坏方法,分块读取文件,设置一个块的大小,第一个read是给while循环赋初始值,第二个read是接着,初始值后面继续读取文件。这种方法来处理大文件,这种方法读取快也可以预防一些错误。 读取和写入完成一定要记得关闭文件。

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章