昊天SEO

Python读取大文件

1. 前言

前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的

for line in open(filepath).readlines()

处理,但停顿好久也没变化,可见占用不小的内存。在网上搜索了下,找到了两种方法来读取大文件。

python icon

python icon

2. with读取大文件

with读取是非常Pythonic的方法,示例如下:

with open(filepath) as f:
 for line in f:
 <do something with line>

这个方法是在Stackoverflow上找到,这位高手对  with  读取的解释是这样的:

The with statement handles opening and closing the file, including if an exception is raised in the inner block. The for line in f treats the file object f as an iterable, which automatically uses buffered IO and memory management so you don’t have to worry about large files.

大意就是with负责处理open和close文件,包括抛出内部异常。而for line in f将文件对象f当做迭代对象,将自动处理IO缓冲和内存管理,这样你无需担心大文件的处理了。

3. fileinput处理

用到了Python的  fileinput

模块,亲测也毫无卡顿,示例代码如下:

import fileinput
for line in fileinput.input(['sum.log']):
 print line

4. 总结

以上两种方法都亲测可用,明显第一种更Pythonic,无需import,而且还能处理close和Exception,更推荐使用。

网站的维护离不开大家的支持鼓励,捐赠让我更有动力走的更远&& 也可以关注我的微信公众号,发布更多的干货
本文网址:https://www.168seo.cn/python/1057.html

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址