Python文件读取案例如何读取文本

wen python案例 29

本文目录导读:

Python文件读取案例如何读取文本

  1. 基本读取方法
  2. 完整示例代码
  3. 实用案例
  4. 常用文件模式
  5. 错误处理最佳实践

我来详细介绍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)
  1. 推荐使用 with 语句:自动关闭文件,避免资源泄露
  2. 指定编码encoding='utf-8' 避免编码问题
  3. 异常处理:使用 try-except 处理文件操作错误
  4. 大文件处理:使用逐行或逐块读取,避免内存溢出
  5. 路径处理:使用 os.pathpathlib 处理文件路径

这些示例覆盖了Python文件读取的常见场景,你可以根据具体需求选择合适的方法。

抱歉,评论功能暂时关闭!