美文网首页
Python读取大文件

Python读取大文件

作者: freelamb | 来源:发表于2017-09-05 21:35 被阅读39次

在工作中,我们常会遇到一个很大的文件(通常为log文件),当出现问题的时候,我们想使用程序来处理日志文件来对问题进行分析。一般可以使用shell脚本等来处理,有时候也会用一些脚本语言(比如:python)来对日志进行处理。一般程序都需要将待处理的文件载入内存,然后才进行处理,这种方式需要很大的内存资源。但一般使用的机器没有这么大的内存,那又如何处理呢?

针对python对文件的处理,一般有read、readline、readlines三种读取文件的方法。调用read()会一次性读取文件的全部内容,如果文件太大,内存就会超载,对于大内存可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。

以下就是使用Python脚本语言对大文件进行处理常使用的方法。

方法一 使用with语句

with 语句的语法格式

with context_expression [as target(s)]:
    with-body

这里 context_expression 要返回一个上下文管理器对象,该对象并不赋值给 as 子句中的 target(s) ,如果指定了 as 子句的话,会将上下文管理器的 enter() 方法的返回值赋值给 target(s)。target(s) 可以是单个变量,或者由“()”括起来的元组(不能是仅仅由“,”分隔的变量列表,必须加“()”)。

测试

# 每读取一万数据打印一次行号
def read_data(file_path):
    index = 0
    with open(file_path) as lines:
        for line in lines:
            index = index + 1
            if index % 10000 == 0:
                print index

方法二

将文件分割处理后读取,每当读取一个后关闭并读取另外一个。

参考

浅谈 Python 的 with 语句

相关文章

  • python 读取大文件,避免内存溢出

    ####python读取大文件 最近在学习python的过程中接触到了python对文件的读取。python读取文...

  • python读取大文件

    我们在处理小的文本文件时一般使用.read()、.readline() 和 .readlines()方法,但是当我...

  • python读取大文件

  • python读取大文件

    对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以...

  • Python 读取大文件

  • Python读取大文件

    在工作中,我们常会遇到一个很大的文件(通常为log文件),当出现问题的时候,我们想使用程序来处理日志文件来对问题进...

  • python 读取大文件

    方法1: 方法2: 推荐方法2,方法2不会把整个文件读入内存,是一种迭代器的读取方法。方法1,会把整个文件load...

  • Python读取大文件

    参考bobby python高级编程 第八章 通常做法 使用f.read()读取全部数据,但是对于大文件会memo...

  • python面试题(2018)

    1.python中大文件是如何读取的? (1)读取几个G的文件时,可以利用生成器generator。 (2)rea...

  • 文本/数据操作

    大文件读取 json 中文编码问题: 排序: url中文转码(python3) csv 文件操作模式 xml lx...

网友评论

      本文标题:Python读取大文件

      本文链接:https://www.haomeiwen.com/subject/iaspjxtx.html