Python 开发工程师必会的 5 个文件操作库
itomcoil 2025-05-15 18:24 13 浏览
在 Python 开发的世界里,文件操作是一项基础且高频的任务。从日常的数据处理到复杂的项目部署,熟练掌握文件操作库能让我们的开发工作事半功倍。本文和大家聊聊我眼中开发必备的 5 个文件操作库,它们各有千秋,能满足不同场景下的文件操作需求。
一、os:系统级文件操作的瑞士军刀
库简介
作为 Python 内置的核心库,os库就像是我们与操作系统文件系统沟通的桥梁。它提供了丰富的函数,涵盖了文件和目录的基本操作、权限管理、环境变量访问等功能,几乎能满足所有系统级的文件操作需求。可以说,只要涉及到文件系统的交互,os库就是我们的首选工具之一。
核心功能与常用方法
功能分类 | 常用方法 | 说明 |
文件操作 | os.open() | 打开文件,返回文件描述符 |
os.read() | 从文件描述符中读取数据 | |
os.write() | 向文件描述符中写入数据 | |
os.close() | 关闭文件描述符 | |
目录操作 | os.mkdir() | 创建单个目录 |
os.makedirs() | 创建多层目录 | |
os.rmdir() | 删除单个空目录 | |
os.removedirs() | 删除多层空目录 | |
os.listdir() | 获取目录下的文件和子目录列表 | |
权限管理 | os.chmod() | 修改文件或目录的权限 |
os.stat() | 获取文件或目录的状态信息 |
实战示例
创建与删除目录
import os
# 创建单个目录
dir_path = "test_dir"
if not os.path.exists(dir_path):
os.mkdir(dir_path)
print(f"目录 {dir_path} 创建成功!")
else:
print(f"目录 {dir_path} 已存在!")
# 创建多层目录
multi_dir_path = "test_dir/sub_dir"
os.makedirs(multi_dir_path, exist_ok=True)
print(f"多层目录 {multi_dir_path} 创建成功!")
# 删除单个空目录
if os.path.exists(dir_path) and os.path.isdir(dir_path):
os.rmdir(dir_path)
print(f"目录 {dir_path} 删除成功!")
# 删除多层空目录
if os.path.exists(multi_dir_path) and os.path.isdir(multi_dir_path):
os.removedirs(multi_dir_path)
print(f"多层目录 {multi_dir_path} 删除成功!")
文件权限修改
import os
file_path = "test.txt"
# 打开文件并写入内容
with open(file_path, "w") as f:
f.write("Hello, World!")
# 将文件权限设置为只读(用户可读可写,组和其他用户只读)
os.chmod(file_path, 0o644)
print(f"文件 {file_path} 权限修改成功!")
# 获取文件状态信息
file_stat = os.stat(file_path)
print(f"文件大小:{file_stat.st_size} 字节")
print(f"最后修改时间:{file_stat.st_mtime}")
二、os.path:路径处理的贴心助手
库简介
os.path是os库的子模块,专门用于处理文件和目录的路径。它提供了一系列实用的函数,帮助我们轻松地解析、组合、判断路径的属性,比如判断路径是否存在、是否为文件或目录、获取文件扩展名等。在处理复杂的路径操作时,os.path能让我们的代码更加简洁和可靠。
核心功能与常用方法
功能分类 | 常用方法 | 说明 |
路径解析 | os.path.split() | 将路径分割为目录和文件名两部分 |
os.path.dirname() | 获取路径中的目录部分 | |
os.path.basename() | 获取路径中的文件名部分 | |
路径组合 | os.path.join() | 连接多个路径组件,自动处理分隔符 |
路径判断 | os.path.exists() | 判断路径是否存在 |
os.path.isfile() | 判断路径是否为文件 | |
os.path.isdir() | 判断路径是否为目录 | |
文件扩展名处理 | os.path.splitext() | 分离文件名和扩展名 |
os.path.extname() | 获取文件的扩展名 |
实战示例
路径解析与组合
import os.path
# 原始路径
path = "/user/home/documents/report.txt"
# 分割路径
dir_part, file_part = os.path.split(path)
print(f"目录部分:{dir_part},文件部分:{file_part}")
# 获取目录名和文件名
dir_name = os.path.dirname(path)
file_name = os.path.basename(path)
print(f"目录名:{dir_name},文件名:{file_name}")
# 组合路径
new_path = os.path.join(dir_name, "new_report.txt")
print(f"组合后的路径:{new_path}")
文件属性判断与扩展名处理
import os.path
file_path = "test.py"
dir_path = "test_dir"
# 判断路径是否存在
print(f"{file_path} 是否存在:{os.path.exists(file_path)}")
print(f"{dir_path} 是否存在:{os.path.exists(dir_path)}")
# 判断是否为文件或目录
print(f"{file_path} 是否为文件:{os.path.isfile(file_path)}")
print(f"{dir_path} 是否为目录:{os.path.isdir(dir_path)}")
# 分离文件名和扩展名
file_base, file_ext = os.path.splitext(file_path)
print(f"文件名(不含扩展名):{file_base},扩展名:{file_ext}")
三、shutil:高级文件操作的全能选手
库简介
shutil库是 Python 中用于高级文件操作的库,它在os库的基础上提供了更强大的功能,比如文件和目录的复制、移动、删除(支持非空目录)、压缩和解压缩等。当我们需要进行一些复杂的文件操作,如批量复制文件、打包项目等,shutil库就能大显身手,让操作变得简单高效。
核心功能与常用方法
功能分类 | 常用方法 | 说明 |
文件复制 | shutil.copy() | 复制文件,目标可以是文件或目录 |
shutil.copy2() | 复制文件,保留元数据(如修改时间、权限等) | |
目录复制 | shutil.copytree() | 复制整个目录及其内容 |
文件移动 | shutil.move() | 移动文件或目录,支持跨文件系统 |
文件删除 | shutil.rmtree() | 删除整个目录及其内容(非空目录也可删除) |
压缩与解压缩 | shutil.make_archive() | 创建压缩包(支持 zip、tar 等格式) |
shutil.unpack_archive() | 解压缩文件 |
实战示例
文件与目录的复制和移动
import shutil
# 复制单个文件
source_file = "test.txt"
dest_file = "copy_test.txt"
shutil.copy(source_file, dest_file)
print(f"文件 {source_file} 复制到 {dest_file} 成功!")
# 复制目录
source_dir = "test_dir"
dest_dir = "copy_test_dir"
shutil.copytree(source_dir, dest_dir)
print(f"目录 {source_dir} 复制到 {dest_dir} 成功!")
# 移动文件
new_dest_file = "new_copy_test.txt"
shutil.move(dest_file, new_dest_file)
print(f"文件 {dest_file} 移动到 {new_dest_file} 成功!")
# 移动目录
new_dest_dir = "new_copy_test_dir"
shutil.move(dest_dir, new_dest_dir)
print(f"目录 {dest_dir} 移动到 {new_dest_dir} 成功!")
压缩与解压缩文件
import shutil
# 创建压缩包(zip格式)
archive_name = "test_archive"
shutil.make_archive(archive_name, "zip", "test_dir")
print(f"压缩包 {archive_name}.zip 创建成功!")
# 解压缩zip文件
shutil.unpack_archive("test_archive.zip", "unpacked_dir")
print(f"压缩包解压缩到 unpacked_dir 成功!")
四、glob:文件搜索的便捷工具
库简介
glob库用于根据指定的模式查找文件路径,它支持通配符匹配,如*(匹配任意字符序列)、?(匹配单个字符)、[](匹配字符范围)等。使用glob库可以轻松地在目录中搜索符合条件的文件,而不需要手动遍历目录,大大提高了文件搜索的效率。
核心功能与常用方法
功能分类 | 常用方法 | 说明 |
简单模式匹配 | glob.glob() | 返回所有符合模式的文件路径列表 |
glob.iglob() | 返回一个生成器,逐个生成符合模式的文件路径 | |
递归模式匹配 | glob.glob(path, recursive=True) | 递归搜索子目录中的文件(Python 3.5+ 支持) |
实战示例
简单文件搜索
import glob
# 查找当前目录下所有的txt文件
txt_files = glob.glob("*.txt")
print("当前目录下的txt文件:")
for file in txt_files:
print(file)
# 查找当前目录下以"test"开头的文件
test_files = glob.glob("test*")
print("当前目录下以'test'开头的文件:")
for file in test_files:
print(file)
# 查找当前目录下第二个字符为'o'的文件
o_files = glob.glob("?o*")
print("当前目录下第二个字符为'o'的文件:")
for file in o_files:
print(file)
递归搜索子目录中的文件
import glob
# 递归查找所有目录下的py文件(Python 3.5+)
py_files = glob.glob("**/*.py", recursive=True)
print("所有目录下的py文件:")
for file in py_files:
print(file)
五、json:处理 JSON 文件的得力伙伴
库简介
在现代开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于存储和传输结构化数据。Python 内置的json库提供了强大的功能,用于将 Python 对象与 JSON 格式进行相互转换,支持读取和写入 JSON 文件,以及处理复杂的 JSON 数据结构。无论是与 Web 服务交互,还是存储配置文件,json库都是不可或缺的工具。
核心功能与常用方法
功能分类 | 常用方法 | 说明 |
序列化(Python 转 JSON) | json.dumps() | 将 Python 对象转换为 JSON 格式的字符串 |
json.dump() | 将 Python 对象写入 JSON 文件 | |
反序列化(JSON 转 Python) | json.loads() | 将 JSON 格式的字符串转换为 Python 对象 |
json.load() | 从 JSON 文件中读取数据并转换为 Python 对象 |
实战示例
写入 JSON 文件
import json
# 定义一个Python字典
data = {
"name": "张三",
"age": 25,
"hobbies": ["阅读", "编程", "旅游"],
"skills": {
"Python": "精通",
"Java": "熟练"
}
}
# 将数据写入JSON文件
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
print("数据写入JSON文件成功!")
读取 JSON 文件
import json
# 从JSON文件中读取数据
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
print("从JSON文件中读取的数据:")
print(data)
print(f"姓名:{data['name']}")
print(f"年龄:{data['age']}")
print(f"爱好:{', '.join(data['hobbies'])}")
print(f"技能:{data['skills']}")
总结对比
为了让大家更清晰地了解这 5 个库的特点和适用场景,下面用表格进行总结对比:
库名 | 主要功能 | 适用场景 | 优势 | 示例操作 |
os | 系统级文件操作,包括文件和目录的创建、删除、权限管理等 | 基础文件系统交互,如创建目录、修改文件权限等 | 功能全面,与操作系统紧密结合 | os.mkdir()、os.chmod() |
os.path | 路径处理,如解析、组合、判断路径属性 | 处理文件路径相关操作,如获取文件扩展名、判断路径是否存在等 | 简化路径操作,提高代码可读性 | os.path.join()、os.path.exists() |
shutil | 高级文件操作,如复制、移动、删除(非空目录)、压缩和解压缩等 | 复杂文件操作,如批量复制文件、打包项目等 | 操作更便捷,支持更多高级功能 | shutil.copy()、shutil.make_archive() |
glob | 文件搜索,根据模式匹配文件路径 | 快速查找符合条件的文件,如查找所有 txt 文件 | 支持通配符,搜索方便高效 | glob.glob("*.txt") |
json | 处理 JSON 文件,实现 Python 对象与 JSON 的相互转换 | 存储和传输结构化数据,如配置文件、API 数据交互等 | 内置支持,使用简单 | json.dump()、json.load() |
这 5 个文件操作库在 Python 开发中各有其不可替代的作用。os和os.path是基础中的基础,掌握它们能让我们熟练处理文件系统的基本操作;shutil和glob则在复杂操作和文件搜索中发挥重要作用;json库更是在处理 JSON 数据时必不可少。希望大家通过学习和实践,能够熟练运用这些库,让自己的 Python 开发工作更加得心应手。在实际项目中,根据不同的需求灵活组合使用这些库,往往能达到事半功倍的效果。你在平时的开发中常用哪些文件操作库呢?有没有遇到过一些特殊的文件操作需求?欢迎在评论区留言分享你的经验和问题。
相关推荐
- 第十章:优化设计与自动化工作流(优化设计是)
-
以下重点讲解优化设计、自动化脚本编写以及与其他工具(如Python、优化算法库)的集成,提升CFD仿真的工程应用效率。目标:掌握参数化扫描、优化算法集成和批量任务管理,实现从单次模拟到自动化设计探索的...
- 安装python语言,运行你的第一行代码
-
#01安装Python访问Python官方(https://www.python.org/),下载并安装最新版本的Python。确保安装过程中勾选“Addpython.exetoPAT...
- Python安装(python安装的库在哪个文件夹)
-
Windows系统1.安装python1.1下载Python安装包打开官方网站:https://www.python.org/downloads/点击"DownloadPython3.1...
- 比pip快100倍的Python包安装工具(python2.7.5安装pip)
-
简介uv是一款开源的Python包安装工具,GitHubstar高达56k,以性能极快著称,具有以下特性(官方英文原文):Asingletooltoreplacepip,pip-tool...
- 【跟着豆包AI学Python】Python环境的安装,编写第一个程序
-
最近几年,人工智能越来越走进人们的日常生活,国内各大公司都推出了自己的AI助手,例如:阿里旗下的通义千问、百度旗下的文心一言、腾讯的腾讯元宝、深度求索的deepseek等,元宝就是字节跳动公司推出的A...
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌...
-
Python3+变量命名规则与约定详解一、官方命名规则(必须遵守)1.合法字符集变量名只能包含:大小写字母(a-z,A-Z)数字(0-9)下划线(_)2.禁止数字开头合法:user_age,...
- Python程序打包为EXE的全面指南:从入门到精通
-
引言在Python开发中,将程序打包成可执行文件(EXE)是分发应用程序的重要环节。通过打包,我们可以创建独立的可执行文件,让没有安装Python环境的用户也能运行我们的程序。本篇文章将详细介绍如何使...
- 别再纸上谈兵了!手把手教你安装GraalVM,让你的代码瞬间起飞!
-
各位老铁们,是不是每次看到我吹嘘GraalVM的各种神迹,心里都痒痒的?想让自己的Java程序秒启动?想让Python脚本跑得比平时快好几倍?想体验一把多语言无缝协作的快感?但一想到要下载、配置、敲命...
- 纠结坏了!从 Python 3.8 升级到 3.14 真有必要吗?
-
点赞、收藏、加关注,下次找我不迷路"我电脑里装的Python3.8,现在都出3.14了,要不要赶紧升级啊?会不会像手机系统更新一样,越升级越卡?"相信很多刚入门的朋友都有类...
- win10下python3.13.3最新版本解释器的下载与安装
-
一、python3.13.3下载官方下载地址:https://www.python.org/1.浏览器访问https://www.python.org/这个地址,进入python的网站,点击【Dowl...
- Python简介与开发环境搭建详细教程
-
1.1Python简介与开发环境搭建详细教程一、Python语言简介1.Python的核心特点2.Python的应用领域表1.1Python主要应用领域领域典型应用常用库Web开发网站后端D...
- python开发小游戏案例(python游戏开发入门经典教程)
-
#头条创作挑战赛#假设你正在开发一个小型游戏,需要实现角色移动、障碍物生成、碰撞检测等功能。你可以使用Python和Pygame库来开发这个游戏。输入以下命令来安装Pygame:pipinstall...
- Python编程:从入门到实践 第十一、二 章 武装飞船
-
假设我们有一个名为AnonymousSurvey的类,用于收集匿名调查的答案。该类包含以下方法:classAnonymousSurvey:def__init__(self,questi...
- 「Python系列」python几个重要模块的安装(二)
-
一、python的pygame的安装:安装地址:https://www.cnblogs.com/charliedaifu/p/9938542.htmlpyagme包下载地址:https://down...
- python如何绘制消消乐小游戏(python字母消消乐)
-
要开发一款消消乐的小游戏界面,我们可以使用Python的pygame库。首先需要安装pygame库,然后创建一个窗口,加载游戏素材,处理游戏逻辑,以及绘制游戏界面。以下是一个简单的消消乐游戏界面实现:...
- 一周热门
- 最近发表
-
- 第十章:优化设计与自动化工作流(优化设计是)
- 安装python语言,运行你的第一行代码
- Python安装(python安装的库在哪个文件夹)
- 比pip快100倍的Python包安装工具(python2.7.5安装pip)
- 【跟着豆包AI学Python】Python环境的安装,编写第一个程序
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌...
- Python程序打包为EXE的全面指南:从入门到精通
- 别再纸上谈兵了!手把手教你安装GraalVM,让你的代码瞬间起飞!
- 纠结坏了!从 Python 3.8 升级到 3.14 真有必要吗?
- win10下python3.13.3最新版本解释器的下载与安装
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)