Python编程实战:文件读写(文本/二进制)详解与实战

文件操作是 Python 编程中最常见的基础技能之一。 无论是保存日志、读取配置、还是处理图片和视频文件,文件读写都是必不可少的能力。

本文将带你深入理解 Python 中文件操作的核心方法: 打开与关闭文件 读取与写入文本文件 处理二进制文件(图片、音频等) 使用 with 上下文管理器让代码更优雅


一、文件操作的基本流程

Python 的文件读写操作一般遵循以下 4 步:

  1. 打开文件 (open())
  2. 读/写文件 (read() / write())
  3. 关闭文件 (close())
  4. 可选:异常处理或使用上下文管理器

一个典型示例👇:

python 复制代码
# 打开文件(只读模式)
f = open("example.txt", "r", encoding="utf-8")

# 读取内容
content = f.read()
print(content)

# 关闭文件
f.close()

二、打开文件:open() 函数详解

open() 是文件操作的入口函数:

python 复制代码
open(file, mode='r', encoding=None)
参数 含义
file 文件路径
mode 打开模式(见下表)
encoding 编码方式(常用 "utf-8")

常见文件打开模式:

模式 含义 是否创建新文件
'r' 只读(默认) ❌
'w' 只写(覆盖原内容) ✅
'a' 追加写入 ✅
'rb' 以二进制读取 ❌
'wb' 以二进制写入(覆盖) ✅
'ab' 以二进制追加写入 ✅
'r+' 读写模式 ❌

三、读取文本文件内容

Python 提供了多种读取方法,根据需求灵活选择。

1️⃣ read() ------ 一次性读取全部内容

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

2️⃣ readline() ------ 每次读取一行

python 复制代码
with open("data.txt", "r", encoding="utf-8") as f:
    line = f.readline()
    while line:
        print(line.strip())  # 去掉换行符
        line = f.readline()

3️⃣ readlines() ------ 一次读取所有行,返回列表

python 复制代码
with open("data.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())

推荐使用 with 上下文:会自动关闭文件,防止资源泄漏。


四、写入文本文件

写文件也很简单:

python 复制代码
# 覆盖写入(原内容会被清空)
with open("output.txt", "w", encoding="utf-8") as f:
    f.write("Python 文件写入示例\n")
    f.write("第二行内容\n")

# 追加写入
with open("output.txt", "a", encoding="utf-8") as f:
    f.write("这是追加的内容\n")

运行后你可以在当前目录找到 output.txt 文件,查看写入结果。


五、文件路径与相对路径

有时我们需要操作不同目录下的文件:

python 复制代码
# 绝对路径
f = open("/Users/admin/Desktop/data.txt", "r")

# 相对路径
f = open("subfolder/info.txt", "r")

如果不确定当前工作路径,可以打印:

python 复制代码
import os
print(os.getcwd())  # 输出当前工作目录

六、操作二进制文件(图片、音频等)

对于非文本文件(如图片、音频、视频等),需要使用 二进制模式 (b)进行读写。

1️ 读取二进制文件

python 复制代码
with open("image.jpg", "rb") as f:
    data = f.read()
    print("文件大小:", len(data), "字节")

2️ 复制二进制文件

python 复制代码
with open("image.jpg", "rb") as src:
    with open("copy.jpg", "wb") as dst:
        dst.write(src.read())
print("图片复制完成!")

这种方式也常用于备份视频、音频、压缩包等文件。


七、文件异常处理

文件可能不存在、权限不足、磁盘满等问题都可能导致程序崩溃。 使用 try...except 可以增强程序稳定性:

python 复制代码
try:
    with open("data.txt", "r", encoding="utf-8") as f:
        print(f.read())
except FileNotFoundError:
    print("❌ 文件不存在!")
except PermissionError:
    print("⚠️ 没有权限访问文件!")
else:
    print("✅ 文件读取成功。")
finally:
    print("操作结束。")

八、实战案例:统计文本文件行数与字数

下面我们结合所学知识,完成一个小任务👇

📄 需求:

编写程序,读取一个文本文件,统计其中的行数 和单词数。

python 复制代码
def count_file_info(filename):
    try:
        with open(filename, "r", encoding="utf-8") as f:
            lines = f.readlines()
            word_count = sum(len(line.split()) for line in lines)
            print(f"📘 文件行数: {len(lines)}")
            print(f"📝 总单词数: {word_count}")
    except FileNotFoundError:
        print("❌ 文件未找到!")

count_file_info("article.txt")

输出示例:

复制代码
📘 文件行数: 20
📝 总单词数: 157

九、总结与最佳实践

技巧 建议
✅ 使用 with open() 自动关闭文件,推荐使用
✅ 指定 encoding='utf-8' 避免中文乱码
⚙️ 模式选择 'r' / 'w' / 'a' 根据需求灵活选择
🧱 处理二进制文件时加 'b' 如:'rb'、'wb'
🚨 使用异常捕获 提高程序健壮性

结语

掌握文件读写,是 Python 程序员的基本功。 从日志系统、配置文件到图片批处理,文件操作无处不在。 通过灵活使用 open()、with、read()、write(),你就能轻松完成各种数据输入输出任务!

相关推荐
huaweichenai17 分钟前
spring boot实现base64上传
java·spring boot·后端
点纭23 分钟前
spring ai1.0实战:ChatClient(2)
java·后端·spring
Gopher_HBo32 分钟前
Resolver 与 Balancer —— 连接管理三层联动
后端
yunwei3733 分钟前
eBPF 实例教程:BPF Arena 零拷贝共享内存
linux·后端·性能优化
Marst Code34 分钟前
上位机开发日记 · 第 12 篇 · 测试:设备模拟器是核心资产
python
UrbanJazzerati34 分钟前
AutoHotkey v2 零基础快速入门 Part 1
后端
geovindu1 小时前
rust: pool Pattern
开发语言·后端·设计模式·rust·对象池简写模式
Rain的Java大神之路1 小时前
Java 工程师做 AI,核心机会在「落地」而非「训练」
java·后端·ai编程
坊钰1 小时前
【LangGraph框架入门级】4. 支持联网搜索的智能代理系统
python·ai编程·langgraph
柠檬味拥抱1 小时前
基于 YOLO11 的六类生活垃圾视觉分类系统 | 用于社区投放点智能督导、分拣线品类分流、投错率统计分析 | 附完整源码与效果演示
后端