Python 开发工程师必会的 5 个文件操作库
liuian 2025-06-12 14:11 99 浏览
在 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 开发工作更加得心应手。在实际项目中,根据不同的需求灵活组合使用这些库,往往能达到事半功倍的效果。你在平时的开发中常用哪些文件操作库呢?有没有遇到过一些特殊的文件操作需求?欢迎在评论区留言分享你的经验和问题。
相关推荐
-
- 惠普台式机进入bios设置u盘启动
-
设置u盘启动的步骤如下:1、首先,将u盘插入hp台式机的USB接口处。2、开机快速断续的按F10键进入BIOS设置界面。3、将光标移到【BootDevicePriority】选项按回车键进入。4、选择【HDDGroupBootPr...
-
2026-01-15 00:37 liuian
- 云手机免费版无限挂机怎么用
-
1、登陆后,如果需要挂网页游戏,点击服务器的左下角,找到IE浏览器,然后打开网页游戏,登陆你的账号就行了,不要关闭IE浏览器,你的网页游戏就会24小时挂在云服务器上面。2、如果想要挂机,打开IE浏览器...
- 上海最近3天疫情情况(上海近几天的新冠疫情情况)
-
根据国家卫健委的每天疫情通报及上海市的疫情通报,上海没有一个区属中高风险地区,所以从上海任何一个区返乡都不需要隔离14天。上海这么大的城市,每天人来人往的Ill流不息,能继续做到区级地区没有中高级风险...
- windows media player怎么下载
-
方法如下:在安装WMP11时只是把C:\DocumentsandSettings\AllUsers\ApplicationData\WindowsGenuineAdvantage\data...
- during(during用法)
-
during用来表示一段时间,其意义大致相当于in的用法。一般来说,凡是能用in的地方,也可以用during.例如:Hecametoseemeduringmyabsence.Don’t...
- 深圳电脑城在哪里(深圳电脑卖场)
-
龙岗:世纪电脑城,平湖电脑城,京科电脑城坪山新区:坪山电脑城龙华:观澜电脑城,大浪电脑城,宏华电脑城,龙华电子城宝安区:赛格电子城,宝安电子城,丰明电脑城,沙井电子城龙岗中心区那边有两个电子城,...
- 电脑上怎么清理c盘垃圾(电脑里怎么清理c盘的东西)
-
C:\ProgramFiles\WindowsApps(隐藏文件夹)。打开“此电脑”,点击“查看”,勾选“隐藏的项目”,即可查看隐藏文件。为保证文件安全,此文件夹需要获取权限才能操作。获取方式...
- 手机哪个杀毒软件最好用
-
杀毒软件我有用过好几种用过之觉得体验感及安全性来说人喜欢推荐腾讯手机管家功能比较全面监控流量、查杀病毒、保护隐私等等界面也比较漂亮重点还要定期扫描同时也要轻易点开别人发链接之类软件有提示危险绝对要点开...
-
- 笔记本电脑怎样截图(苹果笔记本电脑怎样截图)
-
方法/步骤1第一个办法自然是我们最常见最简单的,使用“PrintScreen”键截图了。点击“PrintScreen”键,我们就可以直接截取全部屏幕,找个对话框或者文字区域粘贴就好了。我截的图是这样的2Windows系统都自带有截图工具,我...
-
2026-01-14 22:37 liuian
- vaio笔记本u盘启动(hipaa笔记本u盘启动)
-
可能是u盘启动快捷键没有使用正确。因为笔记本型号不同,所以BIOS会有所不同,并且进入bios的启动快捷键也会不同。而索尼笔记本开机需要按F2键进入bios设置中。 2、在bios中没有正确设置u盘...
- win7补丁更新在哪(win7系统补丁更新到几月)
-
答,方法如下1、点击开始菜单。在开始菜单键上面有三个图标,分别是;用户。设置。电源。点击其中的设置按钮。 2、接着,就打开了Windows设置窗口。点击最后一个“更新和安全”。 3、选择左侧列表中...
- 大白菜启动盘下载(大白菜启动盘官网)
-
要在大白菜U盘上下载系统并创建启动盘,首先需要确保U盘的容量足够大以容纳整个系统镜像文件。然后,您可以从官方网站或可信的下载源获取所需的系统镜像文件,并使用专业的启动盘制作工具,如Rufus或UNet...
- win10笔记本强制关机(windows10笔记本强制关机)
-
笔记本强制关机方法:1、按笔记本的电源键不松手,即可实现强制关机。2、一般涉及强制关机主要有死机、蓝屏、电脑运行程序无响应。强制关机后,笔记本电脑可能会出现非常卡的情况。这主要是因为在强制关机的过程中...
- 硬盘低级格式化软件哪个好(硬盘低级格式化对硬盘有损伤吗)
-
万能低格工具llftool好万能低格工具llftool是一款强大易用的硬盘低级格式化软件,支持硬盘、移动硬盘、内存卡、u盘等等存储设备的低格功能,过程快速方便,性能安全稳定。另外,...
- 一周热门
-
-
飞牛OS入门安装遇到问题,如何解决?
-
如何在 iPhone 和 Android 上恢复已删除的抖音消息
-
Boost高性能并发无锁队列指南:boost::lockfree::queue
-
大模型手册: 保姆级用CherryStudio知识库
-
用什么工具在Win中查看8G大的log文件?
-
如何在 Windows 10 或 11 上通过命令行安装 Node.js 和 NPM
-
威联通NAS安装阿里云盘WebDAV服务并添加到Infuse
-
Trae IDE 如何与 GitHub 无缝对接?
-
idea插件之maven search(工欲善其事,必先利其器)
-
如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
