Python 文件操作教程

文件操作是 Python 编程中最基础、最常用、必须掌握的核心技能。无论是读取配置、处理数据、记录日志,还是爬虫结果保存、生成报告,几乎所有实际项目都会和文件打交道。

这篇文章从基础到实战,系统讲解 Python 文件读写,适合自学入门和考前快速复习。

一、为什么要学文件操作?

在实际编程中,程序不仅要完成逻辑计算,还需要与外部数据进行持久化交互。文件操作正是 Python 实现数据读写、存储与管理的基础能力,无论是处理文本数据、解析配置文件、记录运行日志,还是爬虫结果存储、生成报表、读取数据集等场景,都离不开文件操作。

日常编程中,我们经常需要:

  • 读取文本、CSV、日志文件
  • 写入 / 保存数据到本地
  • 修改、追加内容
  • 处理大批量数据

掌握好文件操作,才能让你的代码真正从内存走向本地、从临时数据变成持久化存储,是从入门到实战必须跨过的关键一步。

Python 提供了非常简洁的文件读写能力,学会它,你的代码就能和本地文件交互


二、最基础:open() 函数

2.1 基本用法

python 复制代码
# 语法 f = open(文件名, 模式, encoding='utf-8')

f = open("demo.txt","r",encoding = "utf-8")

2.2 常用打开模式

  • 'r':只读(默认),文件不存在会报错
  • 'w':写入,会清空原有内容,文件不存在则创建
  • 'a':追加,在文件末尾写,不清空
  • 'r+':可读可写
  • 'b':二进制模式(如图片、视频,配合 rb / wb

2.3 三步走:打开 → 操作 → 关闭

python 复制代码
# 1. 打开文件
f = open('test.txt', 'r', encoding='utf-8')

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

# 3. 必须关闭!
f.close()

2.4 存在的问题

  • 如果忘记 f.close(),会占用文件资源、内存泄漏
  • 中途报错可能导致文件无法正常关闭

所以,更推荐用with语句


三、最安全:with 语句(重点)

with自动关闭文件 ,不用手动写close(),代码更简洁、更安全。

语法:

python 复制代码
# with open(文件名, 模式, encoding='utf-8') as f:
    # 文件操作代码

示例:

python 复制代码
with open('test.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)
# 出了 with 代码块,文件自动关闭

四、最常用的文件读写方法

4.1 读取文件

1. f.read()

一次性读取全部内容,不建议对较大文件使用

2. f.readline()

一次只读取一行(里面可有参数但加了参数后就成了读多少个字节,所以不建议加参数)

3. f.readlines()

读取所有行,返回列表,每一行是一个元素

逐行读取(推荐,省内存):

python 复制代码
with open('test.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(line.strip())  # 去掉换行和空格

4.2 写入文件

覆盖写入w
python 复制代码
with open('test.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, Python!\n')
    f.write('文件操作教程\n')

如果没有test.txt文件,运行后在你当前python文件的同级目录下会创建一个test.txt文件,里面会有这两行话。

⚠️ 注意:w模式会清空原文件

追加写入a
python 复制代码
with open('test.txt', 'a', encoding='utf-8') as f:
    f.write('这是追加的内容\n')

此模式下不会清空原文件,会以追加的形式将数据传入

五. 案例集合

1. 读取并打印文件内容

python 复制代码
def read_file(filename):
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        return "文件不存在"

print(read_file('test.txt'))

2. 将列表写入文件

python 复制代码
lines = ['第一行\n', '第二行\n', '第三行\n']

with open('demo.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)        

3. 复制文件(二进制模式)

python 复制代码
with open('source.jpg', 'rb') as f_src:
    content = f_src.read()

with open('target.jpg', 'wb') as f_dest:
    f_dest.write(content)

六、必记重点总结

  1. 优先用 with open(......) as f,自动关闭文件,最安全。

  2. 常用模式:

  • r: 只读
  • w:写入(覆盖)
  • a:追加
  1. 读取:read(),readline(),readlines()

  2. 写入:write()

  3. 为了避免中文乱码,一定要加 encoding='utf-8',这样就能拒绝乱码。

相关推荐
何以解忧,唯有..6 分钟前
Python time 模块详解:时间处理与日期操作指南
开发语言·python
caimouse13 分钟前
ReactOS 窗口系统分析(20):光标与图标 — cursoricon.c
c语言·开发语言
梅雅达编程笔记17 分钟前
Day 18 · 综合实战 B:AI 客服 Agent(专栏收官)
python·智能客服·ai agent·意图识别·ai客服·大模型应用·ai办公自动化
测试老哥39 分钟前
Pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系
自动化测试·软件测试·python·测试工具·测试用例·pytest·职场发展
Buke..1 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
JacksonMx1 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
longxiaozhang61 小时前
C#运算符重载:让对象也能使用“加减乘除”
开发语言·c#
W_326001 小时前
Python-OpenCV HSV颜色空间与inRange颜色分割:按颜色提取目标物体
图像处理·人工智能·python·opencv·机器学习
mounter6252 小时前
GCCRS 突破与 Rust 入核:Linux 工具链的重大变革
linux·开发语言·rust·linux kernel·kernel
Buke..2 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓