Python读写文件(文本/二进制)的方法详解与实战
作者:程序员爱钓鱼
文件操作是 Python 编程中最常见的基础技能之一。 无论是保存日志、读取配置、还是处理图片和视频文件,文件读写都是必不可少的能力。
本文将带你深入理解 Python 中文件操作的核心方法: 打开与关闭文件 读取与写入文本文件 处理二进制文件(图片、音频等) 使用 with 上下文管理器让代码更优雅
一、文件操作的基本流程
Python 的文件读写操作一般遵循以下 4 步:
- 打开文件(
open()) - 读/写文件(
read()/write()) - 关闭文件(
close()) - 可选:异常处理或使用上下文管理器
一个典型示例:
# 打开文件(只读模式)
f = open("example.txt", "r", encoding="utf-8")
# 读取内容
content = f.read()
print(content)
# 关闭文件
f.close()
二、打开文件:open() 函数详解
open() 是文件操作的入口函数:
open(file, mode='r', encoding=None)
| 参数 | 含义 |
|---|---|
| file | 文件路径 |
| mode | 打开模式(见下表) |
| encoding | 编码方式(常用 "utf-8") |
常见文件打开模式
| 模式 | 含义 | 是否创建新文件 |
|---|---|---|
| 'r' | 只读(默认) | ❌ |
| 'w' | 只写(覆盖原内容) | ✅ |
| 'a' | 追加写入 | ✅ |
| 'rb' | 以二进制读取 | ❌ |
| 'wb' | 以二进制写入(覆盖) | ✅ |
| 'ab' | 以二进制追加写入 | ✅ |
| 'r+' | 读写模式 | ❌ |
三、读取文本文件内容
Python 提供了多种读取方法,根据需求灵活选择。
read()—— 一次性读取全部内容
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
readline()—— 每次读取一行
with open("data.txt", "r", encoding="utf-8") as f:
line = f.readline()
while line:
print(line.strip()) # 去掉换行符
line = f.readline()
readlines()—— 一次读取所有行,返回列表
with open("data.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
print(line.strip())
推荐使用 with 上下文:会自动关闭文件,防止资源泄漏。
四、写入文本文件
写文件也很简单:
# 覆盖写入(原内容会被清空)
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 文件,查看写入结果。
五、文件路径与相对路径
有时我们需要操作不同目录下的文件:
# 绝对路径
f = open("/Users/admin/Desktop/data.txt", "r")
# 相对路径
f = open("subfolder/info.txt", "r")
如果不确定当前工作路径,可以打印:
import os print(os.getcwd()) # 输出当前工作目录
六、操作二进制文件(图片、音频等)
对于非文本文件(如图片、音频、视频等),需要使用 二进制模式(b)进行读写。
读取二进制文件
with open("image.jpg", "rb") as f:
data = f.read()
print("文件大小:", len(data), "字节")
复制二进制文件
with open("image.jpg", "rb") as src:
with open("copy.jpg", "wb") as dst:
dst.write(src.read())
print("图片复制完成!")
这种方式也常用于备份视频、音频、压缩包等文件。
七、文件异常处理
文件可能不存在、权限不足、磁盘满等问题都可能导致程序崩溃。 使用 try...except 可以增强程序稳定性:
try:
with open("data.txt", "r", encoding="utf-8") as f:
print(f.read())
except FileNotFoundError:
print("❌ 文件不存在!")
except PermissionError:
print("⚠️ 没有权限访问文件!")
else:
print("✅ 文件读取成功。")
finally:
print("操作结束。")
八、实战案例:统计文本文件行数与字数
下面我们结合所学知识,完成一个小任务
需求:
编写程序,读取一个文本文件,统计其中的行数和单词数。
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(),你就能轻松完成各种数据输入输出任务!
到此这篇关于Python读写文件(文本/二进制)的方法详解与实战的文章就介绍到这了,更多相关Python读写文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
