Python3 File(文件) 方法

Python3 File(文件)方法


🎯 学习目标

掌握 Python 文件对象常用的方法与操作技巧,包括打开、读取、写入、关闭等基本流程。理解不同模式下文件的处理方式,能够结合实际项目进行高效文件操作,并具备处理异常和大文件的能力。


🔑 核心重点

分类 内容
基本操作 open() 打开文件,read(), write(), close() 等方法
文件模式 'r', 'w', 'a', 'rb', 'wb' 等模式的区别
逐行读取 使用 readline()for line in file: 高效读取大文件
上下文管理器 使用 with open(...) as f: 自动管理资源
异常处理 在文件操作中使用 try...except 避免程序崩溃

📚 详细讲解

一、文件的基本操作流程

Python 中对文件的操作通常遵循以下步骤:

  1. 打开文件(open()
  2. 读取或写入内容
  3. 关闭文件(close()

✅ 示例:

f = open('example.txt', 'r')
content = f.read()
print(content)
f.close()

📌 推荐使用 with 语句自动管理资源:

with open('example.txt', 'r') as f:
    content = f.read()
    print(content)
# 不需要手动调用 close()

二、open() 函数详解

✅ 语法:

open(file, mode='r', encoding=None)
参数说明:
参数 含义
file 文件路径(字符串)
mode 模式(如 'r', 'w', 'a' 等)
encoding 编码格式(推荐指定为 'utf-8'

✅ 常见模式一览表:

模式 描述
'r' 只读(默认),文件必须存在
'w' 写入,清空原内容,若文件不存在则创建
'a' 追加,在末尾添加内容
'r+' 读写,文件必须存在
'w+' 读写,覆盖原文件或新建文件
'rb' 以二进制形式只读
'wb' 以二进制形式写入
'ab' 以二进制形式追加

三、文件读取方法详解

read(size):一次性读取全部或部分文件内容

with open('example.txt', 'r') as f:
    content = f.read(100)  # 读取前100字节
    print(content)

readline():逐行读取

with open('example.txt', 'r') as f:
    line = f.readline()
    while line:
        print(line.strip())
        line = f.readline()

readlines():返回所有行组成的列表

with open('example.txt', 'r') as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())

✅ 最佳实践:直接迭代文件对象(效率最高)

with open('example.txt', 'r') as f:
    for line in f:
        print(line.strip())

四、文件写入方法详解

write(string):写入字符串内容

with open('output.txt', 'w') as f:
    f.write("Hello\n")
    f.write("World\n")

writelines(lines):写入多个字符串(不自动换行)

lines = ["第一行\n", "第二行\n", "第三行\n"]
with open('output.txt', 'w') as f:
    f.writelines(lines)

五、文件定位与指针操作

seek(offset, whence):移动文件指针位置

with open('example.txt', 'r') as f:
    f.seek(10)  # 移动到第10个字节处
    content = f.read()
    print(content)
  • offset: 偏移量(正数向后,负数向前)
  • whence: 起始位置:
    • 0(默认)从文件开头开始
    • 1 从当前位置开始
    • 2 从文件末尾开始

tell():获取当前文件指针位置

with open('example.txt', 'r') as f:
    print(f.tell())  # 输出 0
    f.read(5)
    print(f.tell())  # 输出 5

⚠️ 注意事项

  • 文件操作完成后务必关闭(推荐使用 with
  • 大文件建议使用逐行读取避免内存溢出
  • 二进制文件不能使用文本模式处理
  • 写入模式 'w' 会清空已有文件,请谨慎使用
  • 文件路径应使用绝对路径或确保相对路径正确
  • Windows 下路径斜杠需注意转义(推荐使用 os.pathpathlib

🧪 实际案例分析

📌 场景:实现一个“日志分析器”

功能需求:

  • 读取日志文件(每行为一条日志)
  • 统计包含关键字 "ERROR" 的行数
  • 将这些错误日志输出到另一个文件中

示例代码:

input_file = 'app.log'
output_file = 'errors.log'
error_count = 0

with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
    for line in infile:
        if "ERROR" in line:
            outfile.write(line)
            error_count += 1

print(f"共找到 {error_count} 条错误日志,已保存至 {output_file}")

📌 示例日志文件内容(app.log):

[INFO] 用户登录成功
[ERROR] 数据库连接失败
[WARNING] 内存使用过高
[ERROR] API 请求超时

📌 输出结果:

共找到 2 条错误日志,已保存至 errors.log

🧩 拓展练习(动手实践)

  1. 编写程序,统计一个 .txt 文件中单词数量(忽略标点符号)。
  2. 创建一个“倒计时记录器”,将每秒剩余时间写入文件。
  3. 实现一个“日记本”程序,每天生成一个新文件并记录内容。
  4. 编写脚本,批量重命名指定目录下的所有 .txt 文件。
  5. 构建一个“文件备份工具”,将指定文件夹中的文件复制到另一位置,并记录日志。

📚 推荐阅读


🧭 下一步建议

  • 下一章学习内容:《Python3 OS 模块与文件系统操作》
  • 掌握如何使用 osos.pathshutil 模块操作文件系统
  • 学习遍历目录、判断文件类型、移动/删除文件等实用技能
  • 结合文件读写知识,构建完整的文件管理系统

如果你希望我为你提供:

  • Python 文件方法速查表 PDF(含函数+参数+示例)
  • 更多实战项目练习题(如日志分析器、备份工具、文本编辑器等)
  • 视频教学资源推荐(中文讲解)
  • 如何结合 logging 模块实现专业级日志系统

欢迎随时告诉我 😊

posted @ 2025-05-29 10:20  红尘过客2022  阅读(34)  评论(0)    收藏  举报