pathlib一个优雅的路径操作模块,碾压os

Python内置库之pathlib print(p.stat().st_atime) # 输出最后访问时间print(p.stat().st_mtime) # 输出最后修改时间print(p.stat().st_atime) # 输出文件系统最后访问时间print(p.stat().st_mtime) # 输出文件系统最后修改时间print(p.stat().st_atime) # 输出文件系统最后访问时间print(p.stat().st_mtime) # 输出文件系统最后修改时间。 阅读详情
AI摘要

本文详细介绍Python标准库pathlib的常用操作,包括路径获取、文件创建、路径拼接、文件信息获取、目录遍历等,帮助读者更高效地进行路径操作。

对于 Python 中的路径操作,大多数人第一反应肯定是 os,可以说 os 已经在老一辈 Python coder 心中扎深蒂固,现存的很多教程中操作路径仍然使用 os,殊不知从 python3.4 开始,pathlib 正式成为标准库,已经能够完全取代 os。无论从功能还是易用性都已经超越 os。

看个经典的例子,我们分别使用 os 与 pathlib 来获取上层目录和上上层目录。

os 方法

import os.path

# 获取上层目录
os.path.dirname(os.getcwd())
# 获取上上层目录
os.path.dirname(os.path.dirname(os.getcwd()))

pathlib 方法

from pathlib import Path

# 获取上层目录
Path.cwd().parent
# 获取上上层目录
Path.cwd().parent.parent

[链式调用]完败[嵌套调用],pathlib 是面向对象的模块,使用起来非常灵活方便,下面就详细看看 pathlib 常见操作。建议大家收藏备用!

  • 安装 pathlib 模块
  • pathlib常见操作
    • 获取绝对路径
    • 创建文件/目录
    • 文件/目录判断
    • 路径拼接/拆分
    • 获取文件/目录信息
    • 遍历目录
    • 重命名/移动文件
    • 删除文件/目录

安装 pathlib 模块

通过命令行直接安装。

pip install pathlib

也可以使用豆瓣镜像安装。

pip install -i https://pypi.douban.com/simple pathlib

执行上述命令后,可以检查一下是否安装成功。

pip show pathlib

pathlib常见操作

获取绝对路径

获取当前绝对路径,两种方法。

>>> Path().cwd()
WindowsPath('E:/material/pathlib用法')
>>> Path().resolve()
WindowsPath('E:/material/pathlib用法')
创建文件/目录

创建目录时要注意两个参数:

  • parents:默认为 False,如果父目录不存在,会抛出异常,True 则创建这些目录。
  • exist_ok:默认为 False,目录已存在时会抛出异常。

这里我们在 material 目录下创建 test 文件夹。

>>> p = Path(r'E:\material\test')
>>> p.mkdir(parents=True, exist_ok=True)

touch() 用于创建空文件,父级目录必须存在,否则抛出异常。

>>> p = Path('E:/material/test1.txt')
>>> p.touch(exist_ok=True)
文件/目录判断

判断是否为文件夹

>>> Path('E:/material/pathlib用法').is_dir()
True

判断是否为文件

>>> Path('E:/material/pathlib用法/txt文件.txt').is_file()
True

判断路径是否存在

>>> Path('E:/material/error.txt').exists()
False
路径拼接/拆分

Path类路径拼接的两种方法。

>>> Path('E:/material', 'pathlib用法')
WindowsPath('E:/material/pathlib用法')
>>> Path.cwd().parent.joinpath('pathlib用法')
WindowsPath('E:/material/pathlib用法')

使用 '/' 进行路径拼接。

  • Path Object / Path Object
  • str / Path Object
  • Path Object / str
>>> Path('E:/') / Path('/material/')
WindowsPath('E:/material')
>>> 'E:/' / Path('/material/')
WindowsPath('E:/material')
>>> Path('E:/') / '/material/'
WindowsPath('E:/material')

按照分隔符将文件路径分割

>>> p.parts
('E:\\', 'material', 'pathlib用法')
获取文件/目录信息

获取文件/目录名。

>>> p = Path('E:/material/pathlib用法/excel文件.xlsx')
>>> p.name
'excel文件.xlsx'

获取不包含后缀的文件名。

>>> p.stem
'excel文件'

获取文件后缀名。

>>> p.suffix
'.xlsx'

获取锚,最前面的部分 E:\。

>>> p.anchor
'E:\\'

获取上层目录路径

>>> p = path.cwd()
>>> p.parent
WindowsPath('E:/material')

获取所有上层目录路径

>>> [path for path in p.parents]
[WindowsPath('E:/material'), WindowsPath('E:/')]

获取文件/目录属性。

>>> p.stat()
os.stat_result(st_mode=33206, st_ino=562949953976250, st_dev=503425376, st_nlink=1, st_uid=0, st_gid=0, st_size=6611, st_atime=1642130252, st_mtime=1642062067, st_ctime=1642066962)

获取文件/目录大小,单位字节(B)

>>> p.stat().st_size
6611

获取文件/目录修改时间。

>>> p.stat().st_mtime
1642062067.4264374

获取文件/目录创建时间。

>>> p.stat().st_ctime
1642066962.072431

上面获取的时间都是时间戳,通过 datetime 模块转成标准日期格式。

>>> from datetime import datetime
>>> date = datetime.utcfromtimestamp(p.stat().st_ctime)
>>> date.strftime("%Y-%m-%d %H:%M:%S")
'2022-01-13 09:42:42'
遍历目录

示例文件夹

┌ .ipynb_checkpoints
├     └ Pathlib用法-checkpoint.ipynb
├ csv文件.csv
├ excel文件.xlsx
├ Pathlib用法.ipynb
├ py文件.py
└ txt文件.txt

遍历目录下所有文件,返回一个包含结果路径的迭代器。

>>> p = Path.cwd()
>>> [path for path in p.iterdir()]
[WindowsPath('E:/material/pathlib用法/.ipynb_checkpoints'),
 WindowsPath('E:/material/pathlib用法/csv文件.csv'),
 WindowsPath('E:/material/pathlib用法/excel文件.xlsx'),
 WindowsPath('E:/material/pathlib用法/Pathlib用法.ipynb'),
 WindowsPath('E:/material/pathlib用法/py文件.py'),
 WindowsPath('E:/material/pathlib用法/txt文件.txt')]

根据指定正则匹配目录下的文件,不匹配子目录内的文件。

>>> [path for path in p.glob('*.txt')]
[WindowsPath('E:/material/pathlib用法/txt文件.txt')]

根据指定正则匹配目录下的文件,匹配子目录内的文件。

>>> [path for path in p.rglob('*.ipynb')]
[WindowsPath('E:/material/pathlib用法/Pathlib用法.ipynb'),
 WindowsPath('E:/material/pathlib用法/.ipynb_checkpoints/Pathlib用法-checkpoint.ipynb')]
重命名/移动文件

rename()

重命名文件,当新命名的文件重复时,会抛出异常。下面我们将 test1.txt 文件先重命名为 test2.txt,再修改后缀名为 test2.json。

>>> p = Path('E:/material/test1.txt')
>>> new_name = p.with_name('test2.txt')
>>> p.rename(new_name)
WindowsPath('E:/material/test2.txt')
>>> new_suffix = new_name.with_suffix('.json')
>>> new_name.rename(new_suffix)
WindowsPath('E:/material/test2.json')

移动文件,当新路径下文件已存在时,无法创建该文件。

>>> p = Path('E:/material/test2.txt')
>>> p.rename('E:/material/pathlib用法/test3.txt')
WindowsPath('E:/material/pathlib用法/test3.txt')

replace()

replace() 与 rename() 用法基本相同,唯一不同点就是当新命名的文件重复时,replace() 不会抛出异常,而是直接覆盖旧文件。

删除文件/目录

删除文件,missing_ok=True 设置文件不存在不会抛出异常。

>>> p = Path('E:/material/pathlib用法/not_exist.txt')
>>> p.unlink(missing_ok=True)

删除目录,目录必须为空,否则抛出异常。

>>> p = Path('E:/material/pathlib用法/test')
>>> p.rmdir()

以上就是小编总结的 pathlib 常见操作,足以解决日常工作中的绝大多数问题,收藏,点赞,转发支持一下吧!

对于刚入门 Python 或是想要入门 Python 的小伙伴,可以通过下方小卡片联系作者,一起交流学习,都是从新手走过来的,有时候一个简单的问题卡很久,但可能别人的一点拨就会恍然大悟,由衷的希望大家能够共同进步。另有整理的近千套简历模板,几百册电子书等你来领取哦!

👇🏻 关注公众号卡片,回复“交流群”,一起学习Python👇🏻
Python处理文件系统路径库之pathlib使用详解 Python的pathlib库提供了一种面向对象的方法来处理文件系统路径。它使得路径操作更加直观和易于管理,相比于传统的os.path模块,pathlib提供了更为丰富和灵活的API。 阅读详情

相关推荐

LangChain+FastAPI构建生产级RAG服务实战

RAG(检索增强生成)是一种将外部知识库与大语言模型结合的关键技术,其核心原理在于通过向量检索精准召回相关文档片段,再交由LLM生成答案。技术价值体现在突破模型固有知识边界、降低幻觉风险、支持私有数据合规应用。典型应用场景包括企业知识库问答、金融合规查询、医疗文献辅助诊断等。然而,多数教程仅停留在本地原型阶段,忽视了数据加载稳定性、高并发响应、API健壮性等生产必备能力。本文聚焦LangChain与FastAPI协同落地,深入FAISS索引优化、异步LLM调用、文档智能解析等真实工程细节,解决‘能跑通’到‘

weixin_30292843的博客 384

Python文件路径处理之pathlib模块

pathlib模块为Python中的路径操作提供了一个更加现代和面向对象的API。通过使用Path对象的方法和属性,可以轻松地执行各种路径操作,使得代码更加清晰和易于理解。无论是读取文件、遍历目录还是执行文件操作,pathlib都是一个非常强大且方便的工具。

专注于Python编程技术的分享与交流,致力于帮助开发者提升编程技能,解决实际问题,探索Python的无限可能。 5361

小米路由器R1D进阶玩法:MIXBOX工具箱安装与插件管理指南

本文详细介绍了为小米路由器R1D安装MIXBOX工具箱的完整指南。通过开启SSH、执行一键安装脚本,用户可以轻松解锁路由器的进阶功能,如安装离线下载、内网穿透等插件,从而将旧设备转变为强大的家庭网络服务中心。

weixin_29292431的博客 1114

Python内置库:pathlib模块详解

Pathlib模块提供了表示文件系统路径的类,其语义适用于不同的操作系统。路径类分为纯路径和具体路径,前者提供无I/O的纯计算操作,后者继承纯路径,但也提供I/O操作。

Saki_Python的博客 2037

DRAM刷新refresh相关知识归类-基础小知识(三)

RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

Paul 安的博客 1万+

基于YOLOv26的道路抛洒物检测系统原理实现

本文提出了一种基于YOLOv26的道路抛洒物智能检测系统,通过深度学习技术实现道路抛洒物的实时检测与分类。系统采用分层架构设计,包含视频采集、目标检测、分类评估和预警处理等模块,能够自动识别轮胎碎片、货物包装、金属零件等多种抛洒物,并根据危险程度分级预警。YOLOv26算法在检测精度和速度上的优势使其特别适合道路监控场景,结合背景建模和运动目标提取技术,有效提高了复杂道路环境下抛洒物的识别率。该系统可集成到现有智能交通监控平台,为道路安全管理提供实时决策支持。

一键难忘的博客 1253

Python中的pathlib和Path(面向对象的文件系统路径操作库)

一种内置的面向对象的文件系统路径操作库,本篇文章介绍了Path中的常见的属性和方法,并给出了代码示例。

Le0v1n 的博客 7172

光学测量仿真软件:OpticsBuilder_(9).热应力分析与补偿

在OpticsBuilder中,定义材料的热膨胀系数可以通过API进行。以下是一个Python代码示例,展示如何在OpticsBuilder中定义材料的热膨胀系数。

kkchenjj的博客 1085

Python文件大小获取:从os.path.getsize到os.scandir的性能优化

文件大小获取是文件系统操作的基础功能,涉及操作系统对文件元数据的查询。其原理是通过系统调用访问文件的stat结构体,读取其中的st_size字段。在Python中,这一操作的技术价值在于平衡代码简洁性、跨平台兼容性与执行效率。应用场景包括磁盘空间监控、备份系统、文件同步工具等需要处理大量文件的场景。本文深入解析os.path.getsize、os.stat、pathlib.Path和os.scandir四种方法,特别针对符号链接处理和目录遍历性能进行优化,帮助开发者根据实际需求选择最佳方案。

weixin_34208283的博客 336

深度强化学习在机器人控制中的应用

非常感谢您提供如此详细的任务要求和约束条件。作为一位世界级的人工智能专家和计算机领域大师,我将全身心投入到这篇技术博客的撰写中。 深度强化学习在机器人控制中的应用 1. 背景介绍 近年来,随着人工智能技术的飞速发展,深度学习和强化学习在各个领域都得到了广泛应用,尤其是在机器人

AI天才研究院 1323

RK3399平台开发系列讲解(内核入门篇)1.1、通过sysfs清楚了解设备的系统状况

文章目录1、不敢高声语,恐惊天上人:sysfs目的2、窥一斑而知全豹:sysfs目录介绍3、千丝万缕:sysfs中要素的关系4、数据观星:sysfs中相关结构体 1、不敢高声语,恐惊天上人:sysfs目的 我们想通过sys下面的目录和文件清楚的了解跑Liunx系统的嵌入式设备的系统状况。 2、窥一斑而知全豹:sysfs目录介绍 sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件.

内核笔记 1万+

Python文件遍历性能优化:从os.listdir到os.scandir的深度解析

在Python编程中,文件系统操作是数据处理和系统管理的基础。传统方法如os.listdir()通过多次系统调用获取文件信息,存在显著的性能瓶颈。os.scandir()通过一次性获取并缓存文件元数据,将系统调用从N+1次减少到1次,实现了性能的飞跃。这种优化在数据清洗、日志分析等需要处理大量文件的场景中价值巨大,能显著提升脚本执行效率。本文深入解析os.scandir()的工作原理,通过实战示例展示其在文件遍历、递归搜索等场景的应用,并对比测试显示性能可提升2-20倍。掌握这一高效工具,能帮助开发者更好地

weixin_32520095的博客 261

鸿蒙开发实战项目(九十二):HUAWEI Health血压测量

是华为开发的用于运动健康领域的一个开放平台, 三方APP可以借助HUAWEI Health开放平台提供的。

斌擎科技 1132

大模型工程化能力X光扫描:MiMo-V2-Pro、DeepSeek-V3.2与Kimi K2.5实战对比

大语言模型的工程落地能力远不止于参数规模或基准测试分数,其核心在于长程任务执行、约束条件响应与物理层穿透力的协同表现。结构化长程记忆使模型能构建可导航的语义地图,支撑超500步工具调用链;多目标帕累托前沿搜索则将数学推理迁移到电路优化等真实系统设计中;而需求翻译能力虽擅长API映射,却常在硬件耦合场景失效。本文基于trae平台上的SysY编译器开发、桌面视频编辑器构建与TSMC 180nm LDO电路设计三大硬核任务,实测MiMo-V2-Pro的自诊断能力、DeepSeek-V3.2的约束求解引擎及Kimi

weixin_34342905的博客 569

百度百科 X-Bk-Token 算法还原

百度百科 X-Bk-Token 算法还原

自成背后的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

手撸生产级轻量Agent框架:从K2.6工程实践看状态管理与错误熔断

Agent系统并非大模型调用的简单封装,而是融合工具调度、状态持久化、错误自愈与上下文治理的工程综合体。其核心原理在于将LLM降维为结构化决策编译器,通过执行原子保障确定性、决策胶水实现可验证动作流、交互皮肤聚焦结果交付。技术价值体现在显著提升端到端任务成功率与运维可观测性,尤其适用于代码生成、数据处理、智能投顾等强流程约束场景。本文基于真实落地的K2.6轻量Agent框架,深入解析状态快照、三层熔断与语义压缩等关键机制,直击Agent开发中状态管理混乱与错误传播不可见两大高频痛点。

weixin_33978044的博客 491

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Claude 4 沙箱工程实战:终端数学助手的构建与调试

LLM Agent 并非仅靠 prompt 就能落地,其核心在于代码执行沙箱的边界控制与 streaming 事件状态机的精准解析。本文围绕 Anthropic Claude Sonnet 4 的 code_execution 和 files-api 两大 beta 能力,深入剖析沙箱内存限制对数值计算(如 solve_ivp)的影响、file_id 生命周期管理、prompt 与 tool use 的强耦合机制,以及本地文件系统作为轻量状态存储的设计哲学。面向 Python 工程师,提供可复现的终端级 A

weixin_33859231的博客 338

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

python标准库、threading、multiprocessing、aiomultiprocess、进程/线程 同步、queue(队列)

multiprocessing 包提供了本地和远程并发操作,通过使用子进程而非线程有效地绕过了全局解释器锁。 因此,multiprocessing 模块允许程序员充分利用给定机器上的多个处理器。

freeking101的博客 2万+

Ai-Agent学习历程—— 阶段3——RAG 与记忆机制

基于学习大纲我们有了一个简单的地图,从官网的资料进行对应,主要是以下三部分过程中可以进行参考官方文档,但有一些可能会基于目前最新的资料进行适当的更改,让我们愉快的开始吧!这里为您梳理第一节:ETL 数据智能清洗与高阶分块的学习地图。本节将带您攻克数据进入向量数据库之前的“清洗、结构化解析、智能切分与父子文档关联”全流程,彻底打牢 RAG 的数据地基。以现在大模型的发展来说,200K的上下文甚至接近300K的都有,几本书是不成问题的,那切片的意义又在哪?核心原因有三个:在 RAG 系统中,用户提问后,我们不能

蓝桉 853

python基础篇-路径处理模块pathlib

路径处理模块pathlib

清微的博客 3617

面向对象的文件系统路径 -- pathlib详解

从3.4版本开始,Python提供了一个新的面向对象的处理路径的模块pathlib。其语义可以适用于不同操作系统的环境。pathlib的思想是将路径实例化为一个对象,然后以面向对象的方式,通过属性/方法操作路径。和利用os/os.path通过操作系统直接操作路径的方法不同。

最简单的方法,解决最实际的问题。 2659

Python中的pathlib库:管理文件神器

pathlib库为 Python 文件路径操作提供了一种现代化、面向对象的方式。通过使用Path对象,我们可以更加直观和高效地处理文件和目录路径。无论是在日常的脚本编写,还是在项目复杂的开发中,pathlib都是一个非常有用的工具。尽管os.path模块仍然在 Python 3 中可用,但pathlib凭借其面向对象的设计和简洁的 API,已经成为处理文件路径的首选方式。我是橙色小博,关注我,一起在人工智能领域学习进步!

橙色小博的博客,励志在人工智能领域发光发热! 1706

Python标准库-pathlib

pathlib模块是Python 3.4引入的标准库模块,它提供了一种面向对象的方式来处理文件系统路径。相比传统的os.path模块,pathlib提供了更现代、更直观的API,使路径操作更加简单和优雅。它是处理文件路径的推荐方式,特别适合现代Python项目。pathlib模块是Python中处理文件路径的现代解决方案。通过合理使用pathlib简化路径操作提高代码可读性增强跨平台兼容性优化文件操作提升开发效率优先使用pathlib而不是os.path注意路径对象的不可变性。

Aerkui的博客 1544

快速上手 Python pathlib —— 更优雅的路径操作方式

本文介绍了 Python 3.4 引入的 pathlib 模块,这是一个面向对象的文件路径操作库。与传统的 os.path 相比,pathlib 提供了更直观、简洁的路径操作方法,支持路径拼接、文件属性获取、文件系统操作等功能。文章详细讲解了如何创建路径对象、路径拼接、获取路径信息、文件目录操作、文件读写、目录遍历等核心功能,并通过多个实用示例展示了 pathlib 的实际应用场景。最后对比了 pathlib 与 os.path 的差异,突出了 pathlib 在代码简洁性、可读性和跨平台兼容性方面的优势。

经天纬地,格物致理 1699

Python3教程:pathlib 模块的用法

pathlib 模块提供了表示文件系统路径的类,可适用于不同的操作系统。使用 pathlib 模块,相比于 os 模块可以写出更简洁,易读的代码。pathlib 模块中的 Path 类继承自 PurePath,对 PurePath 中的部分方法进行了重载,相比于 os.path 有更高的抽象级别。本文将带你学习如何使用 pathlib 模块中的 Path 类读写文件、操纵文件路径和基础文件系统,统计目录下的文件类型以及查找匹配目录下某一类型文件等。...

Python热爱者的博客 7398

路径/文件/目录常用操作-基于Python的pathlib库

基于Python的pathlib库整理了路径/目录/文件的常用操作

Dfreedom.的博客 2430
上一篇: 数据分析实战 | A/B测试探寻哪种广告点击率更高?
下一篇: 爬虫福音:Github星标14K+,一个开源的IP代理池
Dream丶Killer
Dream丶Killer 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄8年 7万+粉丝 187原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值