本文目录导读:

我来详细介绍Python读取文本文件的几种常用方法:
基本读取方法
使用 with 语句(推荐)
# 读取整个文件内容
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
逐行读取
# 逐行读取文件
with open('example.txt', 'r', encoding='utf-8') as file:
for line in file:
print(line.strip()) # strip()去除换行符
读取所有行到列表
# 读取所有行到列表
with open('example.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
完整示例代码
# 创建一个示例文件
sample_text = """第一行:Hello World
第二行:Python文件读取
第三行:这是示例文本
第四行:学习编程"""
# 写入示例文件
with open('sample.txt', 'w', encoding='utf-8') as f:
f.write(sample_text)
print("=== 方法1:读取整个文件 ===")
with open('sample.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
print("\n=== 方法2:逐行读取 ===")
with open('sample.txt', 'r', encoding='utf-8') as f:
for line_number, line in enumerate(f, 1):
print(f"第{line_number}行: {line.strip()}")
print("\n=== 方法3:读取指定行数 ===")
with open('sample.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
# 读取前两行
for line in lines[:2]:
print(line.strip())
实用案例
案例1:统计文件行数和单词数
def analyze_text_file(filename):
try:
with open(filename, 'r', encoding='utf-8') as f:
content = f.read()
lines = content.split('\n')
words = content.split()
print(f"文件名: {filename}")
print(f"总行数: {len(lines)}")
print(f"总单词数: {len(words)}")
print(f"总字符数: {len(content)}")
except FileNotFoundError:
print(f"错误: 文件 {filename} 不存在")
except Exception as e:
print(f"读取文件时出错: {e}")
# 使用函数
analyze_text_file('sample.txt')
案例2:搜索文件中的特定内容
def search_in_file(filename, search_term):
found_lines = []
with open(filename, 'r', encoding='utf-8') as f:
for line_num, line in enumerate(f, 1):
if search_term.lower() in line.lower():
found_lines.append((line_num, line.strip()))
if found_lines:
print(f"找到包含 '{search_term}' 的 {len(found_lines)} 行:")
for line_num, line in found_lines:
print(f"第{line_num}行: {line}")
else:
print(f"未找到包含 '{search_term}' 的内容")
# 使用示例
search_in_file('sample.txt', 'Python')
案例3:处理大文件(逐块读取)
def read_large_file(filename, chunk_size=1024):
"""逐块读取大文件,避免内存溢出"""
with open(filename, 'r', encoding='utf-8') as f:
while True:
chunk = f.read(chunk_size)
if not chunk:
break
yield chunk
# 使用生成器处理大文件
for chunk in read_large_file('sample.txt', 100):
print(chunk, end='')
常用文件模式
# 不同的打开模式
modes = {
'r': '只读模式(默认)',
'w': '写入模式(会覆盖)',
'a': '追加模式',
'r+': '读写模式',
'rb': '二进制读取',
'wb': '二进制写入'
}
# 二进制文件读取示例
with open('image.jpg', 'rb') as f:
binary_data = f.read()
错误处理最佳实践
def safe_read_file(filename):
try:
with open(filename, 'r', encoding='utf-8') as file:
return file.read()
except FileNotFoundError:
return f"错误: 文件 {filename} 未找到"
except PermissionError:
return f"错误: 没有权限访问文件 {filename}"
except UnicodeDecodeError:
return f"错误: 文件编码问题,请检查文件编码"
except Exception as e:
return f"未知错误: {str(e)}"
# 使用示例
result = safe_read_file('不存在的文件.txt')
print(result)
- 推荐使用
with语句:自动关闭文件,避免资源泄露 - 指定编码:
encoding='utf-8'避免编码问题 - 异常处理:使用 try-except 处理文件操作错误
- 大文件处理:使用逐行或逐块读取,避免内存溢出
- 路径处理:使用
os.path或pathlib处理文件路径
这些示例覆盖了Python文件读取的常见场景,你可以根据具体需求选择合适的方法。