共计 981 个字符,预计需要花费 3 分钟才能阅读完成。
前面我们学习了文件的基本读写操作。本节我们将深入探讨文件读取的一些高级技巧,这些方法可以让程序更高效、更安全地处理数据。
- 使用 with 语句管理文件
with语句可以在操作完成后自动关闭文件,避免忘记close()而造成资源泄漏。
# 推荐写法
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
即使在读取过程中出现异常,with 语句也会确保文件被正确关闭。
- 逐行读取文件
对于大文件,一次性读取会占用大量内存,逐行读取更加高效。
with open("data.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
这里使用 strip() 去掉每行的换行符。
- 按行读取到列表
有时我们需要将文件的每一行存储在一个列表中:
with open("data.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(lines)
这种方式适合中小型文件,但不适合特别大的文件。
- 按指定大小读取文件
当文件非常大时,可以选择分块读取:
with open("data.txt", "r", encoding="utf-8") as f:
while True:
chunk = f.read(1024) # 每次读取 1024 字符
if not chunk:
break
print(chunk)
这种方法在处理日志、二进制文件时非常常见。
- 文件指针的移动
Python 提供seek()方法移动文件指针,用于重复读取或跳过部分内容。
with open("data.txt", "r", encoding="utf-8") as f:
print(f.read(5)) # 读取前 5 个字符
f.seek(0) # 将指针移回文件开头
print(f.read(10)) # 再次读取 10 个字符
总结:
本节我们学习了文件读取的高级技巧,包括 with 语句、逐行读取、分块读取和文件指针操作。在实际项目中,选择合适的读取方式能提升代码效率和可维护性。
练习与思考:
- 写一个程序,将文件中每一行去掉首尾空格后存入列表,并输出该列表。
- 读取一个日志文件,每次只读取 512 字符,并统计读取的次数。
- 尝试在文件中读取前 10 个字符后,将指针移到文件的第 20 个字符位置,再继续读取内容。
正文完