1. 文件操作是什么? #

2. 打开文件与模式 #

# 只读模式打开文本文件,指定 UTF-8 编码
with open("access.log", "r", encoding="utf-8") as f:
    # 一次性读取全部内容并打印
    print(f.read())

# 追加模式打开,常用于写日志
with open("out.log", "a", encoding="utf-8") as f:
    # 在文件末尾写入一行(需手动加换行符)
    f.write("new line\n")
模式 含义 项目场景
r 只读,文件须存在 读配置、日志
w 覆盖写,不存在则创建 生成报告、导出
a 末尾追加 写日志
rb / wb 二进制读写 图片、Excel 二进制

3. 读取 #

3.1 小文件:一次读完 #

# 只读模式打开配置文件
with open("config.txt", "r", encoding="utf-8") as f:
    # 一次性读取全部内容
    content = f.read()
    print(content)

3.2 大文件:逐行(推荐) #

# 只读模式打开日志文件
with open("access.log", "r", encoding="utf-8") as f:
    # 逐行迭代,惰性读取,省内存
    for line in f:
        print(line)

4. 写入 #

# 待写入的行列表,每行末尾含换行符
lines = ["row1\n", "row2\n"]

# 覆盖写模式创建/重写 report.txt
with open("report.txt", "w", encoding="utf-8") as f:
    # 写入标题行
    f.write("标题\n")
    # 逐行写入数据
    for line in lines:
        f.write(line)

# 或使用 writelines 一次性写入多行
with open("report.txt", "w", encoding="utf-8") as f:
    f.writelines(lines)

5. with 语句(必用) #

# 推荐:with 自动关闭文件,异常时也会关
with open("data.txt", "r", encoding="utf-8") as f:
    data = f.read()
# 离开 with 块后文件已自动 close

# 不推荐:容易忘记 close
# f = open("data.txt"); ...; f.close()

6. pathlib(现代写法,可选) #

# 导入 Path 类
from pathlib import Path

# 读取文本文件全部内容
text = Path("config.json").read_text(encoding="utf-8")
print(text)
# 写入文本到文件
Path("out.txt").write_text("hello\n", encoding="utf-8")

7. JSON 与 CSV #

# 导入 json 模块
import json

# 待序列化的 Python 字典
data = {"name": "张三", "roles": ["admin"]}
# 写入 JSON 文件,中文不转义,缩进 2 空格
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 从 JSON 文件读回 Python 对象
with open("data.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)
# 导入 csv 模块
import csv

# 写入 CSV 文件,newline="" 避免 Windows 多空行
with open("users.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(["name", "age"])
    # 写入数据行
    writer.writerow(["Alice", 25])

# 读取 CSV 文件
with open("users.csv", "r", newline="", encoding="utf-8") as f:
    # 逐行读取,每行是一个列表
    for row in csv.reader(f):
        print(row)

8. 常见异常 #

异常 常见原因
FileNotFoundError 路径错、文件不存在
PermissionError 无读写权限、文件被占用
UnicodeDecodeError 编码与文件不一致,改 encoding 或先确认文件编码
# 捕获文件不存在异常
try:
    with open("missing.txt", "r", encoding="utf-8") as f:
        print(f.read())
except FileNotFoundError:
    print("文件不存在")

9. 项目开发要点 #

10. 总结 #

操作 写法
读小文件 with open(...) as f: f.read()
读大文件 for line in f:
写/追加 w / a + f.write(...\n)
二进制 rb / wb
结构化 json.load / dump,csv.reader / writer