本文目录导读:

我来详细介绍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文件读取的常见场景,你可以根据具体需求选择合适的方法。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播