加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何使用Python读取大文件

发布时间:2020-12-17 00:22:09 所属栏目:Python 来源:网络整理
导读:背景 最近处理文本文档时(文件约2GB大小),出现 memoryError 错误和文件读取太慢的问题,后来找到了两种比较快 Large File Reading ?的方法,本文将介绍这两种。 原味地址 .read() 、 .readline() ?和? .readlines() 。每种方法可以接受一个变量以限制每次

背景

最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading?的方法,本文将介绍这两种。

原味地址

  .read()、.readline()?和?.readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。?.read()?每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而.read()?生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。下面是read()方法示例:

= open(,

read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

line

  

分块读取

处理大文件是很容易想到的就是将大文件分割成若干小文件处理,处理完每个小文件后释放该部分内存。这里用了iter 和 yield

read_in_chunks(filePath,chunk_size=1024*1024== == = chunk

使用With open()

with语句打开和关闭文件,包括抛出一个内部块异常。for line in f文件对象f视为一个迭代器,会自动的采用缓冲IO和内存管理,所以你不必担心大文件。

line

优化

with open(filename,</span><span style="color: #0000ff"&gt;for</span> fLine <span style="color: #0000ff"&gt;in</span><span style="color: #000000"&gt; f:   </span><span style="color: #0000ff"&gt;pass</span> </pre>
读取)读取改为r(读取模式),慢5-6倍。

结论

  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读