Python readline 函数
最后修改时间:2025 年 3 月 26 日
本综合指南探讨了 Python 的 readline 函数,这是在 Python 中逐行读取文件的主要方法。我们将介绍基本用法、文件处理、上下文管理器和最佳实践。通过实际示例,您将掌握 Python 中逐行读取文件的方法。
基本定义
readline 函数每次被调用时,都会从文件中读取一行。它返回该行作为字符串,包括行尾的换行符。当到达文件末尾时,它返回一个空字符串。
readline 的主要特点:它在调用之间保持文件位置,对大型文件具有内存效率,并保留换行符。它非常适合处理不适合放入内存或需要逐行处理的文件。
readline 的基本用法
readline 最简单的用法是从文件中一次读取一行。每次调用都会将文件位置前进到下一行。
# Open a file for reading
file = open('example.txt', 'r')
# Read first line
line1 = file.readline()
print("First line:", line1)
# Read second line
line2 = file.readline()
print("Second line:", line2)
file.close()
这个例子以读取模式 ('r') 打开 'example.txt',使用 readline 读取第一行,然后读取第二行。每次调用 readline 都会返回文件中的下一行。每一行末尾的换行符包含在返回的字符串中。
记住在使用完毕后用 close 关闭文件。文件位置会自动随着每次 readline 调用而前进,跟踪下一次读取应该开始的位置。
用 readline 读取整个文件
您可以使用带有 readline 的循环逐行读取整个文件。这对于大型文件来说是内存高效的。
# Read entire file line by line
file = open('example.txt', 'r')
while True:
line = file.readline()
if not line: # Empty string means EOF
break
print(line.strip()) # Remove newline and print
file.close()
这段代码逐行读取 'example.txt',直到 readline 返回一个空字符串,表明文件结束。strip 方法从每行中删除空格和换行符,然后再打印。
这种方法对于不应该完全加载到内存中的非常大的文件特别有用。它一次处理一行,使内存使用量保持不变,而与文件大小无关。
将 readline 与上下文管理器一起使用
with 语句创建一个自动关闭文件的上下文管理器。这是使用 readline 的推荐方式。
# Using readline with context manager
with open('example.txt', 'r') as file:
line = file.readline()
while line:
print(line.strip())
line = file.readline()
这个例子演示了在 Python 中处理文件的首选方法。with 块确保在处理后正确关闭文件。循环持续到 readline 返回一个空字符串。
上下文管理器可以防止资源泄漏,并通过消除显式的 close 调用使代码更简洁。即使块中发生异常,它们也能正常工作。
用大小控制行读取
readline 接受一个可选的大小参数,以限制从该行读取的字符数。这对于固定宽度的格式可能很有用。
# Using readline with size parameter
with open('data.txt', 'r') as file:
# Read first 10 characters of first line
part1 = file.readline(10)
print("First 10 chars:", part1)
# Read next 5 characters (continues same line)
part2 = file.readline(5)
print("Next 5 chars:", part2)
# Read rest of line
rest = file.readline()
print("Rest of line:", rest)
这段代码演示了大小参数如何限制字符读取。第一次调用读取 10 个字符,下一次从同一行读取另外 5 个字符,最后一次调用读取该行的剩余部分。文件位置仅在当前行内前进,直到读取完整行。
当使用 size 参数时,readline 将在读取指定数量的字符或遇到换行符时返回,以先到者为准。
比较 readline 和迭代
文件对象在 Python 中是可迭代的,为逐行读取提供了一种替代 readline 的方法。这两种方法都有其用途。
# Comparing readline and file iteration
with open('example.txt', 'r') as file:
print("Using readline:")
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.seek(0) # Rewind file
print("\nUsing iteration:")
for line in file:
print(line.strip())
这个例子展示了读取行的两种方法。readline 方法提供了更多的控制(比如大小限制),而迭代更简洁。这两种方法都为大型文件保持了内存效率。
迭代方法通常是简单逐行读取的首选方法,而当您需要精确控制或想要读取部分行时,readline 更好。
最佳实践
- 始终使用上下文管理器: 首选
with语句进行文件处理 - 处理换行符: 记住
readline包括换行符 - 检查 EOF: 空字符串返回表示文件结束
- 考虑内存效率:
readline非常适合大型文件
资料来源
作者
列出所有 Python 教程。