Skip to content

Python 文件处理基础

文件处理是 Python 工程里非常常见的基础能力。知识库资料、日志、报表、配置文件、临时结果,很多都需要通过文件来保存、读取和加工。

数据持久化

内存里的数据程序结束就会消失,文件可以把数据长期保存下来。

跨场景交互

知识库、日志、报表、配置、导入导出,都离不开文件读写。

规避风险

文件操作不当可能误删数据、覆盖原文,甚至造成资源泄露。

提升效率

把常用文件操作封装成函数,可以减少重复代码。

手动处理文件时,流程通常是:打开 → 编辑 → 保存 → 关闭

Python 程序处理文件,本质上也是三步:

  1. 申请资源:打开文件,获得文件引用,建立程序和磁盘文件之间的连接。

  2. 数据交互:读取、写入、追加、遍历或修改文件内容。

  3. 释放资源:关闭文件引用,避免资源一直被占用。

open() 是 Python 原生文件操作函数,基本格式如下:

open("文件路径", mode="r", encoding="utf-8")

常见模式:

模式 含义 文件不存在时 文件存在时
r 只读,默认模式 FileNotFoundError 读取原内容
w 覆盖写 创建新文件 清空原内容后写入
a 追加写 创建新文件 在文件末尾追加

编码建议:

编码 适用场景
utf-8 推荐默认使用,跨平台更稳
gbk 旧 Windows 文本文件可能会遇到

不推荐手动 close(),因为中间一旦报错,后面的关闭逻辑可能不会执行。

f = open("data.txt", "r")
content = f.read()
f.close()

推荐使用 with,代码块结束后会自动关闭文件:

with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()

常见读写:

with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)

pathlib 是 Python 官方推荐的路径处理模块。它把路径封装成 Path 对象,比字符串拼接路径更安全、更清晰。

对比项 原生 open pathlib
路径处理 容易写成字符串拼接 使用 Path 对象安全拼接
资源关闭 手动关闭或配合 with 小文件读写更简洁
代码清晰度 读写逻辑稍分散 常见操作一行完成
from pathlib import Path
file_path = Path(__file__).parent / "data.txt"

小文件可以直接一次性读取:

from pathlib import Path
file_path = Path(__file__).parent / "data.txt"
content = file_path.read_text(encoding="utf-8")
print(content)

大文件不建议一次性读进内存,可以逐行读取:

from pathlib import Path
file_path = Path(__file__).parent / "data.txt"
with file_path.open("r", encoding="utf-8") as f:
for line in f:
print(line.strip())

写入文件分两类:覆盖写和追加写。

from pathlib import Path
file_path = Path(__file__).parent / "data.txt"
file_path.write_text("覆盖内容\n", encoding="utf-8")

覆盖写会清空原内容,适合生成全新文件或重写结果文件。

文件内容通常不能“原地修改某一段”,更常见的流程是:读取内容 → 内存中修改 → 覆盖写回

from pathlib import Path
def modify_file(file_path: str, old: str, new: str) -> None:
file = Path(file_path)
content = file.read_text(encoding="utf-8")
if old in content:
new_content = content.replace(old, new)
file.write_text(new_content, encoding="utf-8")

pathlib 中可以用 unlink() 删除文件。删除操作不可逆,必须谨慎。

from pathlib import Path
def delete_file(file_path: str) -> None:
file = Path(file_path)
if file.exists():
file.unlink()
print(f"已删除:{file.name}")
else:
print("文件不存在")

文件操作经常会重复出现,适合封装成工具函数。

函数 作用
read_text_file(path) 读取文本文件
write_text_file(path, content) 覆盖写文本
append_text_file(path, content) 追加写文本
replace_text_in_file(path, old, new) 替换文件内容
delete_file(path) 安全删除文件

示例:

from pathlib import Path
def read_text_file(path: str) -> str:
return Path(path).read_text(encoding="utf-8")
def append_text_file(path: str, content: str) -> None:
with Path(path).open("a", encoding="utf-8") as f:
f.write(content + "\n")