【Python系列】pathlib模块

news2024/9/23 8:28:19

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.`pathlib`模块简介
    • 二.基本用法
      • 1.创建`Path`对象
      • 2.路径拼接
      • 3.路径属性
      • 4.路径方法
    • 三.实例分析
    • 四.应用场景
    • 五.总结

一.pathlib模块简介

pathlib模块是 Python 标准库的一部分,它将文件系统路径抽象为对象,从而提供了一种更加直观和易于理解的方式来处理文件路径。pathlib模块中的Path类是核心,它封装了文件路径,并提供了许多有用的方法和属性来操作这些路径。
在这里插入图片描述

二.基本用法

1.创建Path对象

创建Path对象非常简单,可以直接使用字符串或者已有的Path对象作为参数:

from pathlib import Path

p = Path("/home/user")
print(p)

2.路径拼接

使用/运算符可以轻松地将路径组合在一起,无论平台如何,/运算符总是正确的分隔符:

p = Path("/home/user") / "projects"
print(p)

3.路径属性

Path对象提供了丰富的属性来访问路径的不同部分:

p = Path("/home/user/projects")
print(p.name)  # 输出:projects
print(p.suffix)  # 输出:项目文件的扩展名,如果没有则为空字符串
print(p.stem)  # 输出:去掉扩展名的文件名
print(p.parent)  # 输出:父目录路径

4.路径方法

Path对象还提供了许多方法来执行常见的文件系统操作,如:

  • exists():检查路径是否存在。
  • is_file()is_dir():检查路径是否是文件或目录。
  • glob(pattern):使用 Unix shell 样式的模式匹配来查找路径。
  • resolve():解析路径,将其转换为绝对路径。

三.实例分析

现在,让我们回到最初的问题,深入分析以下代码片段:

search_path = Path(self._root_dir) / (base_dir or "")

这行代码是pathlib模块的一个典型用法,它展示了如何使用Path对象和条件表达式来构建一个搜索路径。下面是对这行代码的逐部分解释:

  1. Path(self._root_dir):这里创建了一个Path对象,其路径由实例变量self._root_dir指定。这个变量代表了类的实例所关联的根目录路径。

  2. /:这是Path对象的路径连接运算符,用于将self._root_dirbase_dir连接起来。

  3. (base_dir or ""):这是一个 Python 的条件表达式,用于确定要连接的第二个路径部分。如果base_dirNone或者任何被认为是False的值(如空字符串、0 等),则表达式的结果将是一个空字符串。这样,即使base_dir未定义或为None,代码也不会抛出错误。

通过这种方式,search_path变量将存储一个由self._root_dirbase_dir(如果提供了的话)组合而成的新路径。如果base_dirNone或未提供,search_path将只包含self._root_dir的值。

四.应用场景

pathlib模块的应用非常广泛,它可以用于:

  • 文件搜索:通过glob方法匹配特定模式的文件。
  • 目录遍历:使用rglob方法递归地查找目录中的文件。
  • 文件操作:通过Path.open()方法打开文件,或者使用Path.write_text()Path.read_text()方法读写文本文件。
  • 路径解析:使用resolve()方法将相对路径转换为绝对路径。
    在这里插入图片描述

五.总结

pathlib模块为 Python 开发者提供了一种强大且易于使用的方式来处理文件路径。通过面向对象的方法,它简化了路径操作,减少了错误,并提高了代码的可读性和可维护性。无论是简单的路径拼接,还是复杂的文件系统遍历,pathlib都是一个不可或缺的工具。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言项目——贪吃蛇,为什么用curses,定义上下左右

在Linux系统中&#xff0c;使用ncurses在程序编译时还要加上 -lcurses 即&#xff1a;gcc cursedemo.c -lcurses #include<curses.h> int main() {initscr(); //ncurse界面的初始化函数printw("This is a curses window.\n");//再ncurse模式下的printfgetc…

【代码随想录训练营第42期 Day22打卡 回溯Part1 - LeetCode 77. 组合 216.组合总和III 17.电话号码的字母组合

目录 一、做题心得 二、回溯基础知识 1.定义 2.适用问题 3.一个思想 4.代码实现 三、题目与题解 题目一&#xff1a;77. 组合 题目链接 题解&#xff1a;回溯 题目二&#xff1a;216.组合总和III 题目链接 题解&#xff1a;回溯 题目三&#xff1a;17.电话号码的字…

企元数智百年营销史的精粹:借鉴历史创造未来商机

随着时代的发展和科技的进步&#xff0c;传统营销方式正在经历前所未有的颠覆和改变。在这个数字化时代&#xff0c;企业需要不断创新&#xff0c;同时借鉴百年营销史的精粹&#xff0c;汲取历史经验&#xff0c;创造未来商机。而"企元数智"作为现代营销的代表&#…

骑行激情,燃动巴黎——维乐Angel Revo坐垫,赋能你的奥运梦想!

当奥林匹克圣火在塞纳河畔熊熊燃烧&#xff0c;巴黎的街头巷尾都弥漫着骑行的激情。2024年的夏天&#xff0c;自行车赛道上&#xff0c;每一圈轮毂的转动都凝聚着运动员的汗水与荣耀。金牌赛程已定&#xff0c;女子公路自行车决赛于7月27日20:30鸣枪&#xff0c;男子紧随其后&a…

【Nuxt】编写接口和全局状态共享

编写接口 ~/server/api/homeInfo.get.ts export default defineEventHandler((event) > {return {code: 200,data: {name: hello world}} })服务端有一些方法可以快速获取请求常见字段&#xff1a; getQuery(event)getMethod(event)await readBody(event)await readRawBo…

配置Cuttlefish 虚拟 Android 设备

google 参考资料&#xff1a; https://source.android.com/docs/setup/start?hlzh-cn https://source.android.com/docs/devices/cuttlefish/get-started?hlzh-cn Cuttlefish 开始 验证 KVM 可用性 Cuttlefish 是一种虚拟设备&#xff0c;依赖于宿主机上可用的虚拟化。 …

鸿蒙Harmony开发:通用焦点样式事件规范

基础概念 焦点、焦点链和走焦 焦点&#xff1a;指向当前应用界面上唯一的一个可交互元素&#xff0c;当用户使用键盘、电视遥控器、车机摇杆/旋钮等非指向性输入设备与应用程序进行间接交互时&#xff0c;基于焦点的导航和交互是重要的输入手段。焦点链&#xff1a;在应用的组…

Docker安装teslamate

要求 Docker&#xff08;如果不熟悉 Docker&#xff0c;请参阅安装 Docker 和 Docker Compose&#xff09;一台始终开启的机器&#xff0c;因此 TeslaMate 可以持续获取数据计算机上至少有 1 GB 的 RAM 才能成功安装。外部互联网访问&#xff0c;与 tesla.com 交谈 创建一个名…

【数据结构】队列篇

文章目录 1.队列1.1 队列的概念及结构 2. 队列的实现2.1 准备工作2.2 队列的初始化2.3 队尾入队列2.4 队头出队列2.5 获取队列头部元素2.6 获取队列队尾元素2.7 获取队列有效元素个数2.8 检测队列是否为空2.9 销毁队列 3. 代码整合 1.队列 1.1 队列的概念及结构 队列&#xff…

黑马Java零基础视频教程精华部分_15_基本查找/顺序查找、二分查找/折半查找、插值查找、斐波那契查找、分块查找、哈希查找

系列文章目录 文章目录 系列文章目录一、基本查找/顺序查找核心思想&#xff1a;从0索引开始挨个往后查找代码&#xff1a;练习&#xff1a;定义一个方法利用基本查找&#xff0c;查询某个元素在数组中的索引&#xff0c;数组包含重复数据。 二、二分查找/折半查找核心思想:属于…

LVS多模式集群攻略!

NAT模式下的lvs集群 lvs-nat概念&#xff1a;修改请求报文的目标IP,多目标IP的DNAT&#xff0c;本质是多目标IP的DNAT&#xff0c;通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发 最终实现效果&#xff1a; 1.Director 服务器采用双网卡&#xff…

Qt入门(二):第一个Qt项目

新建项目 打开Qt Creator&#xff0c;新建项目&#xff0c;然后一路next 到这一步baseclass有三种选择&#xff1a; QMainWindow&#xff1a;主窗口基类&#xff0c;相较于QWidget&#xff0c;多了菜单栏等杂七杂八的东西。QWidget&#xff1a;最基础的窗口基类&#xff0…

编译运行 Byconity

我的系统是centos&#xff0c;因此用他们的docker编译并用他们的docker-compose运行&#xff0c;以下流程亲测可跑&#xff1a; 拉取并编译 https://github.com/ByConity/ByConity/tree/master/docker/debian/dev-env 运行 https://github.com/ByConity/ByConity/blob/master/d…

Matplotlib | 一文搞定Matplotlib从入门到实战演练!

文章目录 1 什么是Matplotlib1.1 Matplotlib的安装1.2 Matplotlib的基本使用 2 绘制直线3 绘制折线设置标签文字和线条粗细设置中文标题风格的设置 4 绘制曲线绘制曲线yx^2绘制正弦曲线和余弦曲线画布分区 5 绘制散点图绘制不同种类不同颜色的线 6 绘制条形图&#xff08;柱状&…

代码之外的生存指南——生产力

自己感觉今天都没有喝一口水的时间忙忙碌碌的工作了一天&#xff0c;但是到快下班或晚上回想一下今天自己到底在忙些什么的时候&#xff0c;却好像也没有做些什么对自己工作主线有意义的事情&#xff0c;大多时候时间都花费在了那些检查邮件、泡茶、拨打电话、开会议等干扰内容…

科普文:业务场景之常见10家HIS厂商概叙

智慧医院信息化经过几十年的发展&#xff0c;涌现出了一大批优秀的建设企业&#xff0c;我们选取了市面上部分主流的HIS厂商进行了汇集&#xff0c;包括厂商的发展情况、产品情况、技术情况、案例情况等。 卫宁健康 WINEX 口号&#xff1a;软件认知医疗 最新产品&#xff1a;…

集智书童 | 浙江大学 蚂蚁集团提出 PAI,一种无需训练减少 LVLM 幻觉的方法 !

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;浙江大学 & 蚂蚁集团提出 PAI&#xff0c;一种无需训练减少 LVLM 幻觉的方法 &#xff01; 浙江大学 & 蚂蚁集团提出 PAI&#xff0c;一种无需训…

BERT预训练

一、动机 1、在NLP中的迁移学习中&#xff0c;使用预训练好的模型抽取词、句子的特征&#xff0c;不更新预训练好的模型&#xff0c;而是在需要构建新的网络来抓取新任务需要的信息&#xff0c;也就是最后面加上一个MLP做分类&#xff1b; 2、由于基于微调的NLP模型&#xff…

21. 合并两个有序链表(递归)

目录 一;题目&#xff1a; 二代码; 三&#xff1a;结果&#xff1a; 一;题目&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 二代码; /*** Definition for singly-linked list.* struct ListNode {* …

HTMX 和 FastAPI 绝佳搭配

FastAPI的优势 FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于基于标准 Python 类型提示使用 Python 3.7 构建 API。以下是它的一些主要优点&#xff1a; 性能&#xff1a;FastAPI 基于 Starlette 和 Pydantic 构建&#xff0c;使其与 …