Python 开发工程师必会的 5 个文件操作库
off999 2025-05-09 20:59 50 浏览 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 开发工作更加得心应手。在实际项目中,根据不同的需求灵活组合使用这些库,往往能达到事半功倍的效果。你在平时的开发中常用哪些文件操作库呢?有没有遇到过一些特殊的文件操作需求?欢迎在评论区留言分享你的经验和问题。
相关推荐
- pip的使用及配置_pip怎么配置
-
要使用python必须要学会使用pip,pip的全称:packageinstallerforpython,也就是Python包管理工具,主要是对python的第三方库进行安装、更新、卸载等操作,...
- Anaconda下安装pytorch_anaconda下安装tensorflow
-
之前的文章介绍了tensorflow-gpu的安装方法,也介绍了许多基本的工具与使用方法,具体可以看Ubuntu快速安装tensorflow2.4的gpu版本。pytorch也是一个十分流行的机器学...
- Centos 7 64位安装 python3的教程
-
wgethttps://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz#下载指定版本软件安装包tar-xzfPython-3.10.1...
- 如何安装 pip 管理工具_pip安装详细步骤
-
如何安装pip管理工具方法一:yum方式安装Centos安装python3和python3-devel开发包>#yuminstallgcclibffi-develpy...
- Python入门——从开发环境搭建到hello world
-
一、Python解释器安装1、在windows下步骤1、下载安装包https://www.python.org/downloads/打开后选择【Downloads】->【Windows】小编是一...
- 生产环境中使用的十大 Python 设计模式
-
在软件开发的浩瀚世界中,设计模式如同指引方向的灯塔,为我们构建稳定、高效且易于维护的系统提供了经过验证的解决方案。对于Python开发者而言,理解和掌握这些模式,更是提升代码质量、加速开发进程的关...
- 如何创建和管理Python虚拟环境_python怎么创建虚拟环境
-
在Python开发中,虚拟环境是隔离项目依赖的关键工具。下面介绍创建和管理Python虚拟环境的主流方法。一、内置工具:venv(Python3.3+推荐)venv是Python标准...
- 初学者入门Python的第一步——环境搭建
-
Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的。今天千锋武汉Python培训小编将带领Python零基础的初学者完成入门的第一步——环境搭建...
- 全网最简我的世界Minecraft搭建Python编程环境
-
这篇文章将给大家介绍一种在我的世界minecraft里搭建Python编程开发环境的操作方法。目前看起来应该是全网最简单的方法。搭建完成后,马上就可以利用python代码在我的世界自动创建很多有意思的...
- Python开发中的虚拟环境管理_python3虚拟环境
-
Python开发中,虚拟环境管理帮助隔离项目依赖,避免不同项目之间的依赖冲突。虚拟环境的作用隔离依赖:不同项目可能需要不同版本的库,虚拟环境可以为每个项目创建独立的环境。避免全局污染:全局安装的库可...
- Python内置zipfile模块:操作 ZIP 归档文件详解
-
一、知识导图二、知识讲解(一)zipfile模块概述zipfile模块是Python内置的用于操作ZIP归档文件的模块。它提供了创建、读取、写入、添加及列出ZIP文件的功能。(二)ZipFile类1....
- Python内置模块pydoc :文档生成器和在线帮助系统详解
-
一、引言在Python开发中,良好的文档是提高代码可读性和可维护性的关键。pydoc是Python自带的一个强大的文档生成器和在线帮助系统,它可以根据Python模块自动生成文档,并支持多种输出格式...
- Python sys模块使用教程_python system模块
-
1.知识导图2.sys模块概述2.1模块定义与作用sys模块是Python标准库中的一个内置模块,提供了与Python解释器及其环境交互的接口。它包含了许多与系统相关的变量和函数,可以用来控制P...
- Python Logging 模块完全解读_python logging详解
-
私信我,回复:学习,获取免费学习资源包。Python中的logging模块可以让你跟踪代码运行时的事件,当程序崩溃时可以查看日志并且发现是什么引发了错误。Log信息有内置的层级——调试(deb...
- 软件测试|Python logging模块怎么使用,你会了吗?
-
Pythonlogging模块使用在开发和维护Python应用程序时,日志记录是一项非常重要的任务。Python提供了内置的logging模块,它可以帮助我们方便地记录应用程序的运行时信息、错误和调...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 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)