Python学习:pathlib之Path类 - 路径操作

发布时间:2026/11/8 20:36:09

Python学习:pathlib之Path类 - 路径操作 一、pathlib 模块简介pathlib 是Python 3.4版本开始加入的 路径处理模块。它将路径本身变成一个对象这个对象自带各种操作方法代码写起来更直观、优雅。但 pathlib 不会取代 os.path。os.path 的路径 是字符串‘C:/Users/test.txt)pthlib 的路径是对象Path(’C:/Users/test.txt)根据官方文档pathlib 模块共分为 6个部分PurePath纯路径。拼接路径、取文件名、取后缀、判断路径是否以指定的后缀结尾等。不读取硬盘不能创建、删除文件且不区分操作系统因此运行速度快PurePosixPath、PureWindowsPath:用于处理不同操作系统的斜杠PurePosixPath专门处理 / 斜杠的路径Linux系统的 /home/userPureWindowsPath专门处理 \ 反斜杠的路径Windows系统的 C:\UsersPath实体路径继承 PurePath 的所有能力并增加访问磁盘的功能因此可创建、删除文件夹读取文件内容等。PosixPath、WindowsPath是 Path 在不同操作系统下的具体实现在 Windows 系统中导入 Path那么 Path 即为 WindowsPath同样的在Linux系统中导入 Path 即为 PosixPath我们要学习的便是 Path二、Path 的常用方法1、系统方法1Path.cwd()获取当前所在目录它自动识别了操作系统的类型并在返回值中体现出来。和 os 模块的用法基本差不多2Path.home()获取用户主目录os 模块获取用户主目录可通过 os.environ 获取到环境变量然后根据操作系统的类型通过 os.environ[USERPROFILE] Windows系统、os.environ[HOME] Linux系统来获取。3Path.chdir()Path.chdir() 是 Ppython 3.11版本以后的新特性使用方法(由于我的系统环境问题无法复现p Path(rE:\os_path_2)p.chdir()4Path.expanduser()将路径字符串中的 ~ 替换成当前用户的主目录路径作用和 os.path.expanduser(~)完全一样区别在于 Path.expanduser()返回的是一个 Path 对象。5Path.resolve()将路径解析为绝对路径示例1将相对路径替换成绝对路径在 E:\os_path_2 目录下有一个 test.txt的文件先切换到目录下由于环境问题我使用的是 os.chdir()示例2将路径中的 .. 和 . 消除.. 返回上一级. 当前目录原始路径为E:\os_path_2\test\next_file\test2\test_2.txt得到的结果并不是原始路径而且还不相同那么说明一个情况Path.resolve() 只负责处理不负责判断是否存在。如果需要判断文件路径是否存在则需要使用到 .exists() 来进行判断。再来说一个 .resolve()的参数Path.resolve() 默认参数为 strictFalse可指定为 strictTrue什么作用再来试一下路径不存在时会报错相当于使用 .exists()只不过一个返回的是 False一个直接抛出 FileNotFoundError 错误。6Path.absolute()负责补全路径头不负责清理路径中的 .. 或 .通过上面这个示例可以看出 Path.resolve() 和 Path.asbolute() 的不同.absolute()是将当前所在目录的路径补全在了 p4 的前面没有处理路径中的 ...resolve()将当前所在目录的路径补在了 p4 的前面而且处理了路径中的 ..2、查询与判断Path.exists() 判断路径是否存在Path.is_dir()判断是否为目录Path.is_file()判断是否为普通文件Path.is_symlink()判断是否为符号连接Path.is_absolute()判断是否为绝对路径Path.stat()获取文件状态信息Path.lstat()获取文件状态信息不跟踪符号链接Path.owner()获取文件所有者UnixPath.group()获取文件所属组UnixPath.readlink()读取符号链接的目标路径3、遍历与搜索Path.iterdir()遍历指定目录下的所有内容得到的是一个可迭代的对象如果目录中有子目录不会再遍历子目录Path.glob() 通配符搜索当前目录可查找特定的文件Path.rglob()递归通配符搜索所有子目录查找指定目录下包括子目录中所有指定类型的文件Path.walk()递归遍历目录树Path.walk() 是 Python 3.12以后引入的一个新方法它和 os.walk() 的用法基本一致但返回的是生成器。可通过 for root, dirs, files 来循环。root当前目录的完整绝对路径dirs当前目录下所有子目录files当前目录下所有文件通过示例可以看到 Path.walk() 是逐层遍历的过程4、创建与删除Path.mkdir(mode0o777, parentsTrue, exist_okTrue)创建目录mode0o777 用于设置目录的权限不常用parentsFalse/True是否自动创建路径中所有不存在的父目录当parentsTrue时相当于os.makedirs(exist_okFalse/True如果目标目录已存在是否报错Path.touch(mode0o777, exist_okTrue)创建文件或更新时间戳Path.rmdir()删除空目录Path.unlink(missing_okFalse)删除文件5、文件操作Path.open(moder)打开文件和os模块的一样Path.read_text(encodingNone)读取文本文件Path.write_text(data, encodingNone)写入文本文件覆盖写入Path.read_test() 和 Path.write_text() 只适合操作小文件如果需要操作大文件则需要使用 Path.open()。在使用时务必加上 encoding 参数以免报错。6、重命名与移动Path.rename(target)重命名文件或目录Path.replace(target)重命名并覆盖已存在的目录以上就是 Path 的常用方法我将它们分成了6类基本可以满足日常需求。四、一个示例os模块学习过程中做了一个桌面文件整理的脚本在学习 pathlib 后对其进行了修改。根据文件扩展名对桌面文件进行归类整理。# import os from pathlib import Path import shutil import datetime # 1、定义变量 # 获取当前用户主目录 home Path.home() # 定义source_path 变量赋值为桌面路径 source_path home / Desktop # 定义目标主目录 desc_path home / Desktop / files # 通过字典定义不同的文件类型归类到指定的分类目录suffix_*** 名称可以自定义文件分类也可自定义 suffix_dict { suffix_txt: [.txt], suffix_zip : [.tar.gz, .zip, .rar, .7z, .tar, .gz, .bz2, .xz], suffix_doc : [.doc, .docx], suffix_pdf : [.pdf], suffix_excel : [.xls, .xlsx], suffix_powerpoint : [.ppt, .pptx], suffix_image : [.jpg, .jpeg, .png, .gif, .bmp, .svg, .webp], suffix_video : [.mp4, .avi, .mkv, .wmv, .mov, .flv, .webm], suffix_audio : [.mp3, .wav, .aac, .ogg, .flac], suffix_exe : [.exe, .msi] } def makedirs_file(): # 创建主目录 # .mkdir(parentsTrue, exist_okTrue)中, parentsTrue 表示创建父目录, exist_okTrue 表示如果目录已存在则不创建,不会报错 desc_path.mkdir(parentsTrue, exist_okTrue) # 创建子目录 for key in suffix_dict.keys(): (desc_path / key).mkdir(parentsTrue, exist_okTrue) def get_and_move_file(source_path): # 创建目录 makedirs_file() # 遍历桌面 for file_path in source_path.iterdir(): # 如果脚本在 Desktop 下则跳过即不移动脚本文件 if file_path.name Path(__file__).name: continue # 只处理文件不处理文件夹 if not file_path.is_file(): continue # 获取文件名和扩展名 name_without_ext file_path.stem ext file_path.suffix # 查找属于哪个分类 target_key None for key, suffix_list in suffix_dict.items(): if ext in suffix_list: target_key key break # 如果找不到匹配则跳过 if target_key is None: print(f{file_path.name} 无法识别的文件类型) continue # 定义目标路径 target_folder desc_path / target_key target_path target_folder / file_path.name # 重名处理如果存在重名的文件则以当前系统时间重命名文件 if target_path.exists(): timestamp datetime.datetime.now().strftime(%Y%m%d%H%M%S) new_name f{name_without_ext}_{timestamp}{ext} target_path target_folder / new_name print(f⚠️ {file_path.name} 已存在重命名为 {new_name}) # 移动文件 try: shutil.move(file_path, target_path) print(f✅ 移动 {file_path.name} → {target_folder}) except Exception as e: print(f❌ 移动失败{file_path.name}错误{e}) if __name__ __main__: get_and_move_file(source_path)学习中如有不足还请指正
延伸阅读

更多相关文章

2026/11/5 19:32:41

如何提供有效输入以生成高质量博文

1. 关于无效输入的说明我注意到您提供的输入内容存在以下问题:项目标题为无意义的数字串"111111111111111111"项目正文完全空白关键词和摘要描述均为空值相关热搜词和网络热词也未提供有效信息2. 无法生成有效内容的原因2.1 输入信息严重不足根据您提供的…

2026/11/8 20:31:58

浙江考电工证哪里考点?良心建议别走弯路

浙江考电工证哪里考点?良心建议别走弯路 你是不是也遇到过这种情况?手头的工作机会就在眼前,但因为没有电工证,被硬生生拦在门外。我认识的一个小伙子,专门从安阳跑来杭州找工作,结果面试都过了,最后因为没有低压电工证,直接被刷了。这事儿听起来让人…

2026/11/8 20:31:58

蚌埠考电工证在哪考 怎么报名外省证能转吗

蚌埠考电工证在哪考 怎么报名外省证能转吗 之前考的证在外省能不能转过来?这是很多在外地打工的电工朋友最关心的问题。尤其是像我这样在鹤壁干建筑的工人,经常面临跨省换工的情况,证能不能用、怎么报名、哪里能考,这些问题每天都在心头盘旋。…

2026/11/8 20:31:58

怎么在官网查询电工证 电子证书怎么查不影响你考过

怎么在官网查询电工证 电子证书怎么查不影响你考过 怕考不过白交培训费?电工证考试不是走过场,但只要方法对,通过率比你想象的高。很多人担心考不过钱打水漂,其实官方早就把查询和复审流程写得清清楚楚,关键是你得知道去哪里查、怎么查。本文教你…

2026/11/8 20:31:58

上栗电工证怎么复审 全国通用证别交冤枉钱了

上栗电工证怎么复审 全国通用证别交冤枉钱了 怕考不过白交培训费?你不是一个人,很多电工朋友在考证和复审路上都踩过坑。尤其是上栗电工证,作为全国通用的特种作业证,复审流程复杂,很多人因为不懂规则,不仅浪费钱,还耽误了工作。今天我就从濮阳劳务班…

2026/11/8 20:31:58

光明区电工证培训机构怎么报名更靠谱 官方报名入口全解析

光明区电工证培训机构怎么报名更靠谱 官方报名入口全解析 实操考试心里没底怕挂科?作为商丘首次报考的你,是不是对【光明区电工证培训机构】怎么选、在哪里报名、考试难度、流程怎么走,一无所知?别急,这篇文章给你最真实、最实用的报考攻略,从报名入口…

2026/11/8 20:26:58

浏阳考电工证的地方实操考试怎么准备才能拿到电子证书

浏阳考电工证的地方实操考试怎么准备才能拿到电子证书 实操考试心里没底怕挂科,这是大多数准备报考电工证的朋友最真实的感受。尤其是在浏阳,面对日益严格的特种作业操作证考核标准,很多人都在担心自己能不能顺利通过实操考试拿到电子证书。别担心,这篇文…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/8 0:00:27

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑