Python读写文件(文本/二进制)的方法详解与实战

 更新时间:2025年11月06日 08:26:32   作者:程序员爱钓鱼  
文件操作是 Python 编程中最常见的基础技能之一,本文将带你深入理解 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()withread()write(),你就能轻松完成各种数据输入输出任务!

到此这篇关于Python读写文件(文本/二进制)的方法详解与实战的文章就介绍到这了,更多相关Python读写文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解PyCharm配置Anaconda的艰难心路历程

    详解PyCharm配置Anaconda的艰难心路历程

    这篇文章主要介绍了详解PyCharm配置Anaconda的艰难心路历程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python实现视频去抖动功能

    Python实现视频去抖动功能

    视频去抖动是视频处理中的一项重要技术,它可以有效地减少视频中由于相机震动或手持拍摄等原因而导致的画面抖动,提高视频的质量,本文将介绍如何利用 Python 中的 OpenCV 库实现视频去抖动的方法,并提供代码实例,感兴趣的朋友可以参考下
    2024-04-04
  • python如何往列表头部和尾部添加元素

    python如何往列表头部和尾部添加元素

    这篇文章主要介绍了python如何往列表头部和尾部添加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python枚举(enum)模块使用的全面指南

    Python枚举(enum)模块使用的全面指南

    枚举(Enumeration)是编程中一种重要的数据类型,它允许开发者定义一组命名的常量,Python 通过 enum 模块提供了强大的枚举支持,本教程将全面讲解 Python 枚举的使用,从基础到高级应用,需要的朋友可以参考下
    2025-07-07
  • python基于xmlrpc实现二进制文件传输的方法

    python基于xmlrpc实现二进制文件传输的方法

    这篇文章主要介绍了python基于xmlrpc实现二进制文件传输的方法,实例分析了xmlrpclib模块的使用技巧,需要的朋友可以参考下
    2015-06-06
  • 基于python + django + whoosh + jieba 分词器实现站内检索功能

    基于python + django + whoosh + jieba 分词器实现站内检索功能

    这篇文章主要介绍了基于python + django + whoosh + jieba 分词器实现站内检索功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • python爬虫获取京东手机图片的图文教程

    python爬虫获取京东手机图片的图文教程

    下面小编就为大家分享一篇python爬虫获取京东手机图片的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • OPENAI API 微调 GPT-3 的 Ada 模型

    OPENAI API 微调 GPT-3 的 Ada 模型

    这篇文章主要为大家介绍了OPENAI API 微调 GPT-3 的 Ada 模型使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • jenkins+python自动化测试持续集成教程

    jenkins+python自动化测试持续集成教程

    这篇文章主要介绍了jenkins+python自动化测试持续集成教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python实现播放音频和录音功能示例代码

    python实现播放音频和录音功能示例代码

    这篇文章主要给大家介绍了关于python播放音频和录音的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12

最新评论