Python 开发工程师必会的 5 个文件操作库
off999 2025-05-09 20:59 90 浏览 0 评论
在 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 开发工作更加得心应手。在实际项目中,根据不同的需求灵活组合使用这些库,往往能达到事半功倍的效果。你在平时的开发中常用哪些文件操作库呢?有没有遇到过一些特殊的文件操作需求?欢迎在评论区留言分享你的经验和问题。
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
