文件操作

一、文件操作整体流程
Python 操作文件三步走:

打开文件 open()
读 / 写 文件内容
关闭文件 close()

推荐用法:with 语句,自动关闭文件,不用手动写 close()
二、open 函数基础语法

open(file, mode='r', encoding='utf-8')

常用打开模式

模式 含义
r 只读(默认),文件不存在报错
w 只写,清空原有内容,不存在则新建
a 追加写入,在文件末尾添加,不覆盖
r+ 读写
b 二进制模式(图片、视频、exe)
写中文必须指定 encoding='utf-8',防止乱码

三、with 语句推荐写法
自动帮我们关闭文件,安全简洁,工作必用

with open("test.txt", "r", encoding="utf-8") as f:
    # 在这里读写文件
    pass

四、读取文件三种方式

  1. read () 一次性读取全部内容
with open("test.txt", "r", encoding="utf-8") as f:
    content = f.read()

print(content)
  1. readline () 一次读一行
with open("test.txt", "r", encoding="utf-8") as f:
    line1 = f.readline()
    line2 = f.readline()

print(line1)
print(line2)
  1. readlines () 读取所有行,返回列表
with open("test.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()

print(lines)
# 遍历每一行
for line in lines:
    print(line.strip())  # strip() 去掉换行和空格

五、写入文件

  1. w 模式:覆盖写入
    原有内容会被清空,重新写
with open("test.txt", "w", encoding="utf-8") as f:
    f.write("大家好,我是小樊童鞋\n")
    f.write("Python 文件操作学习笔记\n")
  1. a 模式:追加写入
    在文件末尾新增内容,不覆盖旧内容
with open("test.txt", "a", encoding="utf-8") as f:
    f.write("这一行是追加的内容\n")
  1. writelines () 写入多行列表
lines = ["第一行内容\n", "第二行内容\n", "第三行内容\n"]
with open("test.txt", "w", encoding="utf-8") as f:
    f.writelines(lines)

六、读写二进制文件(图片 / 视频 / 音乐)
不用写 encoding,加 b 模式

# 读取图片
with open("pic.jpg", "rb") as f:
    data = f.read()

# 复制保存为新图片
with open("pic_copy.jpg", "wb") as f:
    f.write(data)

常用于:文件复制、爬虫下载图片、读取非文本文件
七、常用文件路径

  1. 相对路径
    和代码同目录下,直接写文件名:
open("test.txt", "r", encoding="utf-8")
  1. 绝对路径
    完整路径,Windows 注意斜杠:
# 方式1 双反斜杠
open("C:\\Users\\xxx\\Desktop\\test.txt", "r", encoding="utf-8")

# 方式2 原始字符串(推荐)
open(r"C:\Users\xxx\Desktop\test.txt", "r", encoding="utf-8")

八、文件常见异常处理
防止文件不存在、权限不足崩溃

try:
    with open("test.txt", "r", encoding="utf-8") as f:
        content = f.read()
except FileNotFoundError:
    print("文件不存在!")
except Exception as e:
    print("文件读取出错:", e)

九、本章小结

文件操作优先用 with + open,自动关文件
r 读、w 覆盖写、a 追加写
中文文件必须加 encoding="utf-8"
read() / readline() / readlines() 三种读取方式
二进制文件用 rb / wb,不用编码
可配合 try-except 捕获文件异常

十、练习题

  1. 创建一个程序,读取用户输入的文本并写入文件。
  2. 实现一个文件复制功能,支持文本和二进制文件。
  3. 编写一个日志记录器,使用 a 模式追加写入日志文件。

十一、进阶内容

  • 使用 os 模块进行文件和目录操作,如 os.path.exists(), os.mkdir()。
  • 使用 shutil 模块进行高级文件操作,如 shutil.copy(), shutil.move()。
  • 处理大文件时,使用分块读取以节省内存。

十二、常见错误

  • 忘记关闭文件:使用 with 语句避免。
  • 编码问题:始终指定 encoding。
  • 路径错误:使用 os.path.join() 构建路径。
posted on 2026-05-05 19:30  小樊童鞋  阅读(0)  评论(0)    收藏  举报