Python中的Pathlib

news2024/11/15 17:38:14

eaf15fdf47180331fa9ff5aef3d59ec4.png

迷途小书童

读完需要

4

分钟

速读仅需 2 分钟

大家好,我是迷途小书童!

今天给大家介绍 Python 中的内置库 Pathlib。

pathlib 模块是 Python 3.4 中新增的标准库,它提供了面向对象的文件系统路径处理方法。pathlib 致力于解决直接操作文件路径字符串容易引发的错误,对路径提供了内置的多种处理方式,使用简单又功能强大。

在 pathlib 模块被引入之前,os.path 模块一直是 Python 中处理文件路径的首选。它包含许多操作路径的函数,如 os.path.join()、os.path.exists() 等等。但是这些函数直接接收路径的字符串,非常容易导致路径拼接错误。

为了解决这个问题,Python 引入了 pathlib,其设计灵感来源于 Shutil 模块。pathlib 提供了 Path 类来封装路径操作,更安全易用。

1

   

实现原理

pathlib 的核心是 Path 类,它将路径封装成一个对象,可以对其调用各种方法来处理文件系统路径。Path 的实现主要依赖 Python 的 PurePath 类提供的底层 C API。PurePath 将路径分割成不同部分,通过组合操作实现路径功能。

Path 类对 PurePath 进行封装,提供面向对象的高级接口,如添加子路径、读取文件内容、检查路径是否存在等操作。

2

   

应用场景

pathlib 可广泛用于任何需要文件路径处理的场景,如

  • 拼接路径时使用 Path 对象而不是字符串,避免手动处理操作系统特定的分隔符

  • 检查文件状态、metadata、创建删除目录

  • 读取写入文件内容

  • 遍历目录下文件

  • 将路径传给接受字符串的 API

它是所有 Python 程序中处理路径的最佳选择。

3

   

优缺点

先列优点:

  • 面向对象接口,简洁易用

  • 避免直接字符串拼接使出错

  • 提供多种文件系统方法

当然,也有缺点:

  • Python 3.4 以上才有,旧版本不支持

  • 某些高级操作可能还需要 os 模块配合

4

   

代码示例

下面再来看个完整的示例,部分注释与代码执行结果写在了代码中间

from pathlib import Path


# 创建Path对象
p = Path('/usr/local') 


# 组合子路径
sub_p = p / 'bin' / 'python'  


# 查看父目录
print(sub_p.parent) 
# /usr/local/bin


# 查看文件名称
print(sub_p.name)  
# python


# 拼接路径字符串
print(str(sub_p)) 
# /usr/local/bin/python


# 检查路径是否存在
print(sub_p.exists()) 


# 遍历目录下所有文件
for f in p.iterdir():
    print(f)


# 在目录下创建新目录
new_dir = p / 'temp'
new_dir.mkdir()


# 写入文本文件
text_file = new_dir / 'text.txt'
text_file.write_text('Hello World!') 


# 读取文本文件
print(text_file.read_text())


# 重命名文件
text_file.rename('hello.txt')

5

   

总结

pathlib 为路径处理提供了更优雅更 Python 式的解决方案。它既保留了 os.path 的灵活性,又使代码更安全简洁。pathlib 是所有 Python 程序员必须掌握的重要知识点。

6

   

免费社群

679362e7af25aa81eb3ce76aea4543d7.jpeg

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

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

相关文章

宝塔Linux面板的安装配置

一、 宝塔Linux面板的功能 宝塔面板是一款服务器管理软件,可以帮助用户建立网站,一键配置服务器环境,使得用户通过web界面就可以轻松的管理安装所用的服务器软件。 二、宝塔Linux面板的安装 宝塔官网地址:https://www.bt.cn/new…

【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 list模拟实现 1. 前言2. list类的大致框架与结构…

开源协议对比:局限性、应注意事项与详细对比

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

浙江工业大学MBA和浙江工商大学MBA哪个容易上岸?

在浙江省内,一般嫌弃浙大MBA项目学费贵的考生基本会从其它八个MBA项目中做衡量选择,其中浙工大MBA和浙工商MBA项目就是不少考生经常会做对比的项目,究竟哪个项目更容易上岸也是大家所关注的话题之一,立足浙江的杭州达立易考教育结…

从融云数智办公平台,看企业需要什么样的大模型?

本文中,我们将聚焦 ToB 领域,打开 AIGC 在 C 端社交泛娱乐之外的另一个切面,探索 B 端叙事的新变化。关注【融云 RongCloud】,了解协同办公平台更多干货。 过去两年,关于互联网大厂最多的消息当属裁员和关停非短期商业…

2.9 PE结构:重建导入表结构

脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以…

速看!外滩大会发布银行数字科技5大趋势

通用人工智能风起云涌,金融行业将如何应对? 9月8日,由中国银行业协会指导,网商银行承办的外滩大会银行业数字化论坛上,IDC中国副总裁兼首席分析师武连峰发布了《银行数字科技五大趋势》:随身银行、AI风控、…

群晖(Synology)NAS 后台安装 Docker 后配置 PostgreSQL

群晖(Synology)NAS 的后台在新版本对 Docker 不再称为 Docker,现在改称为 Container Manager 了。 单击进入后运行 Container Manager。 PostgreSQL 容器 针对 PostgreSQL 的容器,我们选择容器后,如果你已经安装了 P…

buffer pool原理总结

innodb buffer pool原理总结 文章目录 innodb buffer pool原理总结1. 缓存的重要性2. innodb buffer pool2.1 buffer pool的内部组成2.2 FREE链表2.3 FLUSH链表2.4 LRU链表2.4.1 LRU链表的功能预读 1. 缓存的重要性 我们都知道,对于innodb存储引擎的表来说&#xf…

快手用户活跃度分析(未完成)

目标 为期30天的用户数据,但是不是所有的用户都有30天的信息数据,比如用户A第7天注册的,则其前6天没有数据。 预测未来用户活跃度的可能性。 预测7天后的,基于第7天,预测第14天,基于第8天,预测…

2023数模A题——定日镜场的优化问题

A题——定日镜场的优化问题 思路:该题主要考察的几何知识和天文学知识,需要不同角度下的镜面和遮挡情况。 资料获取 问题1: 若将吸收塔建于该圆形定日镜场中心,定日镜尺寸均为 6 m6 m,安装高度均为 4 m,且…

解密Kubernetes(K8s)集群的创建过程和关键步骤

文章目录 1. 准备环境2. 安装Docker3. 安装Kubernetes在Master节点上执行以下步骤:安装kubeadm、kubelet和kubectl初始化Master节点 在工作节点上执行以下步骤:加入集群 4. 设置Kubeconfig5. 安装网络插件6. 验证集群7. 部署应用程序8. 扩展和管理集群9.…

Weblogic反序列化漏洞

文章目录 1、搭建环境2、漏洞特征3、漏洞利用1)获取用户名密码2)后台上传shell 4、检测工具 1、搭建环境 漏洞环境基于vulhub搭建–进入weak_password的docker环境 sudo docker-compose up -d拉取靶场 2、漏洞特征 404特征Weblogic常用端口:7001 3、漏洞利用…

centos7使用docker-compose一键搭建mysql高可用主从集群

docker部署 环境准备 卸载旧版本 yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine 安装依赖 yum install -y yum-utils \…

PCB - 封装焊盘阻焊层的检查

文章目录 PCB - 封装焊盘阻焊层的检查概述检查做出的实际PCB正反面厂家提供的生产稿PCB对应的原始gerber文件查封装拿一个插件电阻为例插件封装焊盘的基本数据END PCB - 封装焊盘阻焊层的检查 概述 打样回来, 看到要焊接的几个插件管脚有阻焊, 无法焊接. 这几个封装是直接从第…

腾讯发布超千亿参数规模的混元大模型;深度学习与音乐分析与生成课程介绍

🦉 AI新闻 🚀 腾讯发布超千亿参数规模的混元大模型 摘要:腾讯在2023腾讯全球数字生态大会上发布混元大模型,该模型拥有超千亿的参数规模和超2万亿 tokens 的预训练语料。混元大模型将支持多轮对话、内容创作、逻辑推理、知识增强…

CleanShot X for mac安装下载,mac系统录屏、截图、标注软件

您是否经常需要截图、录屏或者标注图片?如果是,那么您一定会喜欢CleanShot X for mac,这是一款专为Mac用户设计的强大而简洁的工具。 CleanShot X for mac可以让您轻松地截取任何区域的屏幕,无论是整个屏幕、窗口还是选定的部分。…

Say Goodbye to OOM Crashes

内存管理 --- 在计算机编程中,内存管理是一项关键任务,用于在程序运行时正确分配和释放内存。一个有效的内存管理系统可以帮助程序提高性能,减少内存泄露和访问错误等问题。 内存管理涉及以下几个方面: 1. 内存分配&#xff1a…

MMDetection实验记录踩坑记录

AP值始终为0 在实验MMDetection的DAB-DETR模型进行实验时,AP值始终上不去。 可以看到,在第22个epoch时的AP值仅为0.002 因为在此之前已经运行过YOLOX,Faster-RCNN等模型,所以数据集的设置肯定是没有问题的,而博主也只是修改了DAB…

嵌入式学习笔记(18)代码重定位实战 下篇

adr和ldr伪指令的区别 ldr和adr都是伪指令,区别是ldr是长加载、adr是短加载。 adr指令加载的是运行时地址;ldr指令加载的是链接地址。 (通过反汇编文件可以深入分析adr和ldr的区别) 重定位(代码拷贝) …