📅  最后修改于: 2023-12-03 15:06:57.623000             🧑  作者: Mango
在处理大文件时,一次性读入内存可能会导致内存溢出,因此我们需要逐行读取文件。使用生成器可以方便地实现逐行读取,而且在程序运行时也不会消耗太多内存。
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.
本文介绍了如何使用生成器逐行读取文件。相比一次性读入内存,逐行读取文件可以节省内存并适用于处理大文件。希望本文能够帮助您解决相关问题。