菜鸟都用os.path,据说高手都用这个库,更快捷方便

Geneformer实战指南:基于Hugging Face Transformers的基因序列分类模型解析 本文详细解析了基于Hugging Face Transformers的Geneformer模型在基因序列分类任务中的应用。通过介绍模型架构、数据处理流程和实战案例,帮助生物信息学研究者掌握这一前沿技术,实现高效的基因表达数据分析与分类。 阅读详情
pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径之间划分,纯路径提供纯粹的计算操作而没有I / O,以及具体路径,它继承纯路径但也提供I / O操作。

听起来有点绕?那就对了,毕竟这是直译过来的,但这并不影响我们喜爱它。我们通过几个例子来了解它吧

举个栗子

相对于 os 模块的 path 方法,Python3 标准库 pathlib 模块的 Path 对路径的操作会更简单。

获取当前文件路径

使用 os 模块时,有两种方法可以直接获取当前文件路径:

640?wx_fmt=png


pathlib 获取当前文件路径应该怎么写呢?官方文档给出了建议 插眼传送

640?wx_fmt=png

动手试一试

import pathlibvalue1 = pathlib.Path.cwd()print(value1)
640?wx_fmt=png

它是如何实现的

文档中有介绍,它以 os.getcwd() 的形式将路径返回。我们去源码中一探究竟(Pycharm 编辑器快捷键 ctrl+鼠标左键点击即可跟进指定对象)

640?wx_fmt=png

原来它是对 os 模块中一些对象进行了封装,看 cwd 的注释:
Return a new path pointing to the current working directory  
意为:返回指向当前工作目录的新路径。

看起来也没什么特别的,但是为什么官方特意将它推出呢?

其他的封装

pathlib 封装了很多的 os path ,文档中有写明,如:

# 关系说明 os.path.expanduser() --> pathlib.Path.home() os.path.expanduser() --> pathlib.Path.expanduser() os.stat() --> pathlib.Path.stat() os.chmod() --> pathlib.Path.chmod()

官网文档截图:

640?wx_fmt=png


再举几个栗子

刚才的案例并不能说明什么,只是让我们了解到 pathlib 的构成,接下来让我们感受一下它带给我们的便捷。

获取上层/上层目录

也就是获取它爷爷的名字

640?wx_fmt=png

os 模块的写法为:
import osprint(os.path.dirname(os.path.dirname(os.getcwd())))
640?wx_fmt=png

如果用 pathlib 来实现:

import pathlibprint(pathlib.Path.cwd().parent.parent)
640?wx_fmt=png

parent 就完事了,这是不是更贴近 Pythonic ?像写英语一样写代码。

如果你只需要找到它爸爸,那就使用一次:

import pathlibprint(pathlib.Path.cwd().parent)

你还可以继续往祖辈上找:

import pathlibprint(pathlib.Path.cwd().parent.parent.parent)
640?wx_fmt=png

相对与之前 os 模块使用的多层 os.path.dirname,使用 parent 是不是便捷很多?

路径拼接

如果你要在它爷爷辈那里拼接路径,那么你需要写这么长一串代码:

import osprint(os.path.join(os.path.dirname(os.path.dirname(os.getcwd())), "关注", "微信公众号", "【进击的", "Coder】"))
640?wx_fmt=png

当你用 pathlib 的时候,你一定能够感受到快乐:

import pathlibparts = ["关注", "微信公众号", "【进击的", "Coder】"]print(pathlib.Path.cwd().parent.parent.joinpath(*parts))

而且你还可以通过增加或减少 parent 的数量,来实现它祖辈的调节,美哉。

PurePath

上面的操作大部分都通过 pathlib 中的 Path 实现,其实它还有另一个模块 PurePath。

PurePath 是一个纯路径对象,纯路径对象提供了实际上不访问文件系统的路径处理操作。有三种方法可以访问这些类,我们也称之为flavor。

上面这句话来自于官方文档,听起来还是有点绕,我们还是通过栗子来了解它吧

PurePath.match

让我们来判断一下,当前文件路径是否有符合 '*.py' 规则的文件

import pathlibprint(pathlib.PurePath(__file__).match('*.py'))
640?wx_fmt=png

很显然,我们编写代码的 coder.py 就符合规则,所以输出是 True。

为什么我要拿这个来举例呢?

再深入想一下 pathlib.PurePath 后面能够跟着 match,那说明它应该是个对象,而不是一个路径字符串。

为了验证这个想法,把代码改一改:

import pathlibimport osos_path = os.path.dirname(__file__)pure_path = pathlib.PurePath(__file__)print(os_path, type(os_path))print(pure_path, type(pure_path))print(pathlib.PurePath(__file__).match('*.py'))
640?wx_fmt=png

打印通过 os.path 获取当前路径的结果,得出一个路径字符串;而通过 pathlib.Pure 则获得的是一个 PurePosixPath 对象,并且得到的路径包括了当前文件 coder.py。

这就有点悬疑了, PurePosixPath 究竟是什么?

pathlib 可以操作两种文件系统的路径,一种是 Windows 文件系统,另一种称为非 Windows 文件系统,对应的对象是 pathlib.PurePosixPath 和 PureWindowsPath,不过不用担心,这些类并非是指定在某些操作系统上运行才能够使用,无论你运行的是哪个系统,都可以实例化所有这些类,因为它们不提供任何进行系统调用的操作。

不提供任何进行系统调用的操作,这又是什么?真是越听越深了

文档在最开始给出了这么一段描述:

Pure paths are useful in some special cases; for example:
If you want to manipulate Windows paths on a Unix machine (or vice versa). You cannot instantiate a WindowsPath when running on Unix, but you can instantiate PureWindowsPath.
You want to make sure that your code only manipulates paths without actually accessing the OS. In this case, instantiating one of the pure classes may be useful since those simply don’t have any OS-accessing operations.



翻译:纯路径在某些特殊情况下很有用; 例如:
如果要在Unix计算机上操作Windows路径(反之亦然)。WindowsPath在Unix上运行时无法实例化,但可以实例化PureWindowsPath。
您希望确保您的代码仅操作路径而不实际访问操作系统。在这种情况下,实例化其中一个纯类可能很有用,因为那些只是没有任何操作系统访问操作。

还附上了一张图:

640?wx_fmt=png

一下子也不是很理解,这是什么意思。不要紧,继续往下看。

对应关系

通过以上的例子我们可以感受到,它不仅封装了 os.path 相关常用方法,还集成了 os 的其他模块,比如创建文件夹 Path.mkdir。

如果你担心记不住,没关系的,文档一直都在。并且文档给我们列出了对应关系表

640?wx_fmt=png

基本用法

Path.iterdir()  # 遍历目录的子目录或者文件

Path.is_dir()  # 判断是否是目录

Path.glob()  # 过滤目录(返回生成器)

Path.resolve()  # 返回绝对路径

Path.exists()  # 判断路径是否存在

Path.open()  # 打开文件(支持with)

Path.unlink()  # 删除文件或目录(目录非空触发异常)

基本属性

Path.parts  # 分割路径 类似os.path.split(), 不过返回元组

Path.drive  # 返回驱动器名称

Path.root  # 返回路径的根目录

Path.anchor  # 自动判断返回drive或root

Path.parents  # 返回所有上级目录的列表

改变路径

Path.with_name()  # 更改路径名称, 更改最后一级路径名

Path.with_suffix()  # 更改路径后缀

拼接路径

Path.joinpath()  # 拼接路径

Path.relative_to()  # 计算相对路径

测试路径

Path.match()  # 测试路径是否符合pattern

Path.is_dir()  # 是否是文件

Path.is_absolute()  # 是否是绝对路径

Path.is_reserved()  # 是否是预留路径

Path.exists()  # 判断路径是否真实存在

其他方法

Path.cwd()  # 返回当前目录的路径对象

Path.home()  # 返回当前用户的home路径对象

Path.stat()  # 返回路径信息, 同os.stat()

Path.chmod()  # 更改路径权限, 类似os.chmod()

Path.expanduser()  # 展开~返回完整路径对象

Path.mkdir()  # 创建目录

Path.rename()  # 重命名路径

Path.rglob()  # 递归遍历所有子目录的文件

pathlib 回顾

通过上面的几个例子,我们对 pathlib 应该有一个大体的了解,接下来再回顾一下官方给 pathlib 库的定义:

This module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between pure paths, which provide purely computational operations without I/O, and concrete paths, which inherit from pure paths but also provide I/O operations.

释义:pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径之间划分,纯路径提供纯粹的计算操作而没有I / O,以及具体路径,它继承纯路径但也提供I / O操作。

回顾刚才这张图,重新理解 pathlib

640?wx_fmt=png

如果你以前从未使用过这个模块,或者只是不确定哪个类适合您的任务,那么Path很可能就是您所需要的。它为代码运行的平台实例化一个具体路径。

总结:

pathlib 不单纯是对 os  中一些模块或方法进行封装,而是为了兼容不同的操作系统,它为每类操作系统定义了接口。你希望在UNIX机器上操作Windows的路径,然而直接操作是做不到的,所以为你创建了一套接口 PurePath,你可以通过接口来实现你的目的(反之亦然)

机器人运动不流畅?手把手教你用ACCSET调整ABB/FANUC点位加速度 本文针对ABB和FANUC工业机器人运动不流畅、拐角抖动、到位震颤等常见问题,提供了详细的解决方案。核心在于使用ACCSET指令(ABB)或ACC选项(FANUC)调整机器人的点位加速度与减速度参数。文章通过实战案例与系统化调试流程,手把手指导工程师优化运动性能,实现平稳、精准的机器人运动控制。 阅读详情

相关推荐

别再混淆了!一张图看懂SAP特殊采购类30/40/70/80的区别与选型指南

本文深度解析SAP特殊采购类30/40/70/80的核心逻辑与业务影响,通过对比框架和真实案例帮助用户掌握其适用边界。重点介绍委外加工(类型30)、工厂间转移(类型40/70)及计划与执行分离(类型80)的配置要点与常见问题,提供选型决策树和实施检查清单,助力企业优化供应链管理。

weixin_26938645的博客 455

你还在用 os.path?快来感受一下 pathlib 给你带来的便捷吧!

相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic。但是它不单纯是为了简化操作,还有更大的用途 概述 pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径...

weixin_33744854的博客 278

A2B音频总线在智能座舱中的应用

车载A2B链路音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进、功能丰富的信息娱乐功能以满足消费者的用户体验。但传统的模拟并行音频信号传输方式,难以在功能增加与整车轻量化(线缆的重量及成本减少)之间取得均衡。这时候就需要A2B音频总线了。A2B音频总线用于连接车辆中的音频设备,如麦克风(MIC)、功放(AMP)、多媒体主机(Head Unit)和T-BOX等。通过一条低成本的非屏蔽双绞线UTP,进行跨距

怿星科技的博客 3935

Python获取当前路径及父级路径

#coding=UTF-8 import os # 当前路径 current_path = os.path.dirname(__file__) # 上一级路径(父级路径) parent_path = os.path.dirname(current_path) print("当前路径:" + current_path) print("上一级路径:" + parent_path)

liuchaoqi06的博客 1160

GT-suite v2016的下载和安装

1 写在前面 GT-suite 是一款用来做内燃机仿真的软件。在安装过程中遇到很多问题,网上的安装教程也大都抄来抄去,试着安装了几遍都没有成功。最终在贴吧一个老哥的帖子里找到了解决办法,但是老哥的帖子也不是很详细,所以做了这个详细版本的教程。 GT-suite v2016安装包: 链接:https://pan.baidu.com/s/1JZPgJ8_-J-L8rV84-eHedQ 提取码:uj...

kisssshot的博客 3万+

工业缺陷检测深度学习方法综述

异常:点异常、 上下文异常和集群异常。点异常:又称为离群值 (outliers)[9], 描述数值上偏离正 常样本的独立数据。与异常相近的概念还包括新颖点(novelty)和分布外数据。上下文异常:同样描述数据点,其数值属于正常范围,但不符合局部上下文规律。集群异常:描述一系列相关数据的集合,集合中的每一个实例的数值在单独考察时都处于正常值域,但集 合整体的相关性特征不服从正常模式。一般的图像异常检测往往仅需区分正常与异常样本,而工业缺陷检测更关注于检测 图像中的异常像素.

2301_80355452的博客 1844

【python库对比】路径专题 os.path和pathlib对比

python 路径处理 高频使用库 os.path 和 pathlib 对比 以及代码示例,并在最后提供了2个库高频使用的接口示例

m0_74536743的博客 2296

告别眼疲劳!保姆级教程:给你的SecureCRT v8.7.2换上护眼高亮配色(附透明背景设置)

本文提供了一份详细的SecureCRT v8.7.2护眼高亮配色方案教程,帮助程序员缓解眼疲劳问题。通过科学调整配色方案、动态环境自适应设置以及字体渲染优化,显著提升终端使用的舒适度和工作效率。特别推荐Solarized Dark和One Dark Pro医学适配版配色方案,适合长时间编码工作。

weixin_42549496的博客 355

AutoCV第五课:Python基础

AutoCV第五课笔记

周同学的博客 812

深圳SILAS(智能融合低空系统)无人机调度系统介绍

一、系统定位与核心目标SILAS(Smart Integrated Lower Airspace System)是深圳市为低空经济打造的“数字大脑”,由粤港澳大湾区数字经济研究院自主研发,定位为城市级低空飞行智能调度与管理平台。核心目标是解决低空经济中“高密度、高复杂度、多主体”的飞行调度难题,实现空域资源的高效分配、飞行安全的智能监管及全场景服务的无缝协同,支撑深圳从“无人机之都”向“天空之城”升级。二、核心架构:低空基础设施“四张网”设施网。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 3751

手把手教您同花顺如何设置大盘分时均价线

本文将手把手教你如何在同花顺PC端开启大盘指数分时图📈

XiaoqiangClub的博客 4429

python系统路径_详谈Python3 操作系统与路径 模块(os / os.path / pathlib)

以下代码以Python3.6.1 / windows10为例Less is more!#!/usr/bin/env python# coding=utf-8__author__ = 'Luzhuo'__date__ = '2017/5/7'import osdef os_demo():# 执行命令dirs = os.popen("dir").read()print(dirs)# 打印目录树dirs...

weixin_39831170的博客 237

《QGIS快速入门与应用基础》079:KML/KMZ格式:Google Earth兼容

KML/KMZ是专为地理可视化设计的空间数据格式,原生兼容Google Earth,支持点线面要素标注与多媒体集成。KML为XML文本格式,KMZ是其压缩版本。该格式优势在于可视化表现力强、跨平台共享便捷,适合地理标注、路线分享等场景,但存在属性支持弱、大数据量处理效率低等局限。QGIS中可便捷加载和导出KML/KMZ数据,需注意编码设为UTF-8、勾选"导出样式"以保留可视化效果。建议中小规模标注数据使用KMZ格式,确保关联资源完整,提升共享效率。

LuckyHanMo的博客 773

requestmapping path和value为什么不用path_菜鸟都用os.path,据说高手都用这个库,更快捷方便...

pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径之间划分,纯路径提供纯粹的计算操作而没有I / O,以及具体路径,它继承纯路径但也提供I / O操作。听起来有点绕?那就对了,毕竟这是直译过来的...

weixin_39955418的博客 476

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

2024年最新Ubuntu18(13),【大牛系列教学】

切换至postgres用户#修改配置文件。

2401_84976207的博客 826

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

macos系统 打不开压缩文件_优雅地(划掉)在macOS上压缩RAR文件

2020年程序猿节不简单,因为:>>>2020-1024码农小伙伴们同乐啊,人生得意须尽欢,莫使秃头空对月 (*'▽'*) 醒醒吧你这个专业生产shit mountain的菜狗也配自称码农?忘了在哪听说的了,一个优秀的程序员,如果他做的任务需要重复三次以上时,那么他就应该用代码去完成。(原话肯定没我说的这么拉胯233333)于是就想趁着今天写点能用程序简化工作的方法。学校的程序设...

weixin_42498108的博客 723

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

配置C++的学习环境

如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。

shiwei0813的博客 3955

Python:概述与基础语法(一)

本文是一份全面的 Python 入门指南,涵盖了 Python 的发展历史、语言特点、应用领域、安装配置、基础语法以及进阶学习路线。文章从 Python 的设计哲学和解释型语言特性讲起,详细介绍了在 Windows、macOS 和 Linux 系统上的安装步骤,包括环境变量配置和常见问题解决。接着讲解了 Python 基础语法,包括变量、数据类型、类型转换等核心概念。最后为初学者规划了 Web 开发、数据分析、自动化/爬虫和 AI/机器学习四个方向的学习路径,并提供了丰富的学习资源推荐。

WindsProgrammer的博客 628

Hermes Agent:面向会议场景的本地化AI智能中枢架构解析

Agent(智能体)是当前大模型落地的核心范式,其本质是通过感知、规划与执行闭环实现自动化任务处理。Hermes Agent 并非通用框架,而是聚焦会议这一高频办公场景,构建了‘语音/文本感知→结构化协议解析→多系统协同执行’的技术路径。它以 YAML 驱动工作流、Streamlit 实现离线桌面级交互、协议层解耦 LLM 与业务逻辑,显著降低私有化部署门槛。技术价值体现在隐私可控、低依赖、高可配——无需云服务、不强求 GPU、支持 Ollama/DeepSeek/Qwen 等多后端。典型应用场景包括会议录

weixin_34335458的博客 363

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

pathlib, 一个优雅的python库,os和os.path两个模块的更优解!

但是路径并不只是一个字符串,如果需要对文件进行操作,需要结合使用多个标准库的功能,如: 需要移动当前目录下的一些文件到备份目录,需要使用。创建、删除、读取、写入、查找、移动、复制、拆分,以及其他任何你想对文件路径或文件本身执行的操作,获取当前路径的方法,也可以显示的传入路径字符串进行路径创建,支持相对路径和绝对路径字符串的传递。,使得上述的问题变得更加轻松,pathlib创建的Path对象,可以直接通过正斜杠运算符。而且,由于不同的操作系统使用的分隔符不同,使用字符串拼接路径就容易出现问题。

m0_59236602的博客 1725

python获取一个路径的父路径

如果你使用的是 ​Python 3.4 及以上,​推荐使用,代码更清晰、易读、面向对象。如果你使用的是较老版本的 Python,或者习惯使用os.path,那也可以继续使用。🔧 ​示例综合:​​parent_dir = file_path.parent # 获取父目录: data/resultsgrandparent_dir = file_path.parent.parent # 获取祖父目录: dataprint(f"文件路径: {file_path}")

Kp0fS的草稿纸 411

python os.path常用方法

测试环境: python 2.7 使用os相关,注意引用:import os 使用time相关,注意引用:import datetime 官网:https://docs.python.org/3/library/os.path.html os.path.abspath # 返回绝对路径 print(os.path.abspath('path.py')) ...

鹤九日的博客 168

pathlib 相对于os.path更加简单实用

python从3.4开始提供了pathlib,是一种用OO方式处理pathname的新机制。os.path是比较low-level的接口,用string处理pathname。 pathlib中主要有两个class,PurePath和Path,后者继承前者。PurePath用来支持对纯粹的pathname的各种操作,不会接触到filesystem。而Path则实现了调用filesystem接口。 os和pathlib的对应关系 pathlib的常用基本方法 Path.cwd() #..

h18208975507的博客 995

python3 pathlib模块判断是否存在目录/文件

#### 前言 在python3.4开始的版本中,提供了pathlib模块,采用面向对象的方法去判断是否存在目录/文件,很方便及高效的使用 #### 示例 ``` from pathlib import path filePath = path("/data/mydir") if filePath.is_dir(): # if filePath.is_file(): ...

weixin_42715225的博客 4539

pathlib-python模块:parents属性和parent属性,parents[0]等同于parent

pathlib-python模块:parents属性和parent属性,parents[0]等同于parent

小坏蛋的博客 7567
上一篇: 微软再称王
下一篇: 只需三步,菜鸟也能用Python做一个简易版Siri
菜鸟学Python
博客等级 码龄9年 8081粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值