📜  使用生成器逐行读取文件 - Python (1)

📅  最后修改于: 2023-12-03 15:06:57.623000             🧑  作者: Mango

使用生成器逐行读取文件 - Python

在处理大文件时,一次性读入内存可能会导致内存溢出,因此我们需要逐行读取文件。使用生成器可以方便地实现逐行读取,而且在程序运行时也不会消耗太多内存。

代码实现
def read_file_by_line(file_path):
    """
    逐行读取文件,使用生成器
    :param file_path: 文件路径
    :return: 逐行返回文件内容
    """
    with open(file_path, 'r') as f:
        for line in f:
            yield line.strip()

该函数接收文件路径作为参数,返回一个生成器对象。在函数内部,我们使用with open(file_path, 'r') as f:来打开文件,并用for line in f:逐行读取文件内容。通过yield来将每行内容返回给调用者。值得一提的是,yield会保留当前函数状态并且不会终止函数,因此我们可以在循环中不断地使用yield来逐行读取文件。

使用示例

我们来看一个具体的例子,如下是一个名为example.txt的文本文件。

1. Today's weather is fine.
2. I really enjoy walking on a sunny day.
3. It always makes me feel happy.

下面我们使用read_file_by_line函数来逐行读取文件内容。

# 引入函数
from path.to.module import read_file_by_line

# 调用函数
file_path = 'path/to/example.txt'
for line in read_file_by_line(file_path):
    print(line)

运行结果为:

1. Today's weather is fine.
2. I really enjoy walking on a sunny day.
3. It always makes me feel happy.
总结

本文介绍了如何使用生成器逐行读取文件。相比一次性读入内存,逐行读取文件可以节省内存并适用于处理大文件。希望本文能够帮助您解决相关问题。