Python | Path 让文件路径提取变得简单(含代码)_python path stem-程序员宅基地

技术标签: python  Python  

原创声明

本文为 HinGwenWoong 原创,如果这篇文章对您有帮助,欢迎转载,转载请阅读文末的【授权须知】,感谢您对 HinGwenWoong 文章的认可!


前言

我们在编写代码的时候经常会和文件系统做交互,但是 os.path 属于比较基础的库,我们在提取文件夹的名字、后缀或者父文件名字的时候需要经常用到 split,切割之后需要对得到的 list 进行提取,有时候得到的效果不是我们需要的,而且代码代码写得也不是特别的友好,这里我们介绍 Python3 自带的库 Path,可以让我们使用更少的代码但是与之而来的是更高的效率。

我是 HinGwenWoong,一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,码字不易,如果帮到您,请帮我在屏幕下方点赞 ,您的点赞可以让技术传播得更远更广,谢谢!


一、Path 是什么?

该模块提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类被分为提供纯计算操作而没有 I/O 的 纯路径,以及从纯路径继承而来但提供 I/O 操作的 具体路径。

在这里插入图片描述
在一些用例中纯路径很有用,例如:

  • 如果你想要在 Unix 设备上操作 Windows 路径(或者相反)。你不应在 Unix 上实例化一个 WindowsPath,但是你可以实例化 PureWindowsPath。

  • 你只想操作路径但不想实际访问操作系统。在这种情况下,实例化一个纯路径是有用的,因为它们没有任何访问操作系统的操作。


二、使用步骤

1.提取文件名

方法名 : .name

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/demo.py")
path_file_name = path_str.name
print(path_file_name)

输出

demo.py

2.提取父文件路径

方法名 : .parent

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/demo.py")
path_parent_path = path_str.parent
print(path_parent_path)

输出

\user\HinGwenWoong

3.提取文件后缀

方法名 : .suffix

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/demo.py")
path_suffix = path_str.suffix
print(path_suffix)

输出

.py

4.提取无后缀的文件名

方法名 : .stem

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/demo.py")
path_only_name = path_str.stem
print(path_only_name )

输出

demo

5.更改文件后缀

方法名 : .with_suffix

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/demo.py")
path_suffix = path_str.with_suffix(".json")
print(path_suffix)

输出

\user\HinGwenWoong\demo.json

6.遍历文件

方法名 : .iterdir()

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/logs")
for path in path_str.iterdir():
    print(path)

输出

/user/HinGwenWoong/log/20210517.log
/user/HinGwenWoong/log/20210518.log
/user/HinGwenWoong/log/20210519.log
/user/HinGwenWoong/log/20210524.log
/user/HinGwenWoong/log/20210525.log

7.组合文件路径

方法名 : .joinpath

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/")
path_str_join = path_str.joinpath("demo.py")
print(path_str_join)

输出

\user\HinGwenWoong\demo.py

8.是否绝对路径

方法名 : is_absolute()

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/")
print(path_str.is_absolute())

输出

True

9.是否文件夹 or 文件

方法名 : is_dir()is_file()

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/")
print(path_str.is_dir())
print(path_str.is_file())

输出

True
False

10.是否存在

方法名 : .exists()

from pathlib import Path

path_str = Path(r"/usr/HinGwenWoong/")
print(path_str.exists())

输出

True

11.glob

方法名 : .glob

from pathlib import Path

path_str = Path(r"/user/HinGwenWoong/scripts")
print(path_str.glob('*.py'))

输出

[PosixPath('/user/HinGwenWoong/scripts/demo_1.py'), 
PosixPath('/user/HinGwenWoong/scripts/demo_2.py')]

总结

以上就是我经常使用 Path 的方法,这可以让您操作文件路径的时候更少的代码并且更高效。

我是 HinGwenWoong,一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,码字不易,如果帮到您,请帮我在屏幕下方点赞 ,您的点赞可以让技术传播得更远更广,谢谢!


更多阅读推荐

参考


授权须知

  1. 原创文章在推送一天后才可进行转载
  2. 转载文章,禁止声明原创
  3. 不允许直接二次转载,转载请根据原文链接联系作者
  4. 若无需改版,在文首清楚标注作者及来源/原文链接,并删除【原创声明】,即可直接转载。
    但对于未注明转载来源/原文链接的文章,我将保留追述的权利。

    作者:HinGwenWoong
    一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,共同进步!
    CSDN: HinGwenWoong
    原文链接:Python | Path 让文件路径提取变得简单(含代码)

  5. 若需要修改文章的排版,请根据原文链接联系作者
  6. 再次感谢您的认可,转载请遵守如上转载须知!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hxj0323/article/details/113374539

智能推荐

python numpy大数组时出现MemoryError的解决方法_numpy.core._exceptions._arraymemoryerror: unable t-程序员宅基地

文章浏览阅读2.4w次。python numpy大数组时出现MemoryError的解决方法PC有16GB内存,但只用了5GB·python就报MemoryError,很是疑惑。·google后发现下面文章。才意识到是由于我安装了Anacoda的32位版本,卸载32位->安装64位版本后问题解决。https://blog.csdn.net/weixin_39750084/article/details/815..._numpy.core._exceptions._arraymemoryerror: unable to allocate 256. kib for an

IOPS、带宽(band width)、吞吐量 (throughput)-程序员宅基地

文章浏览阅读194次。SAN和NAS存储一般都具备2个评价指标:IOPS和带宽(throughput),两个指标互相独立又相互关联。体现存储系统性能的最主要指标是IOPS。IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),指的是系统在单位时间内能处理的最大的I/O频度,是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I..._吞吐量 transfer bandwidth

Math.random() 随机数范围非常好的记忆方式_random如何记忆-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏2次。方法千千万,可能你会觉得我这种记忆方式没必要,新手勿喷。例如随机生成5-10之间的数代码如下:(5 + Math.random()*5);随机生成出来的数为5.00到9.99之间,因为int是取整所以小数点后面都不要也就是5到9。公式如下:最小范围+Math.random()*(最大范围-最小范围)例如:87到92之间87+Math.random()*(92..._random如何记忆

VIC水文模型入门攻略(中)VIC的数据和输入文件准备_vic global parameter file-程序员宅基地

文章浏览阅读2.7w次,点赞39次,收藏107次。更正:上篇末尾关于运行汇流程序的部分,在“STEHE.stnloc”文件中需要修改的部分应改为NONE而非none。希望没有太多人因此造成困扰…VIC的输入文件都有啥其实VIC及其汇流程序真正的交互方式都是通过读入文件完成的。它们都要求有一个文件存储各种设定参数,包括运行的日期时间、运行模式以及所需的各种数据文件的位置。 上一篇中启动VIC的命令./vicNl -g /home/.../globa_vic global parameter file

windows 远程桌面研究-程序员宅基地

文章浏览阅读468次。最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识。1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server。大家使用 mstsc.exe 远程桌面登录windows server时,退出时,99.99%的人会直接关闭 mstsc.exe 窗口,而不会点击开始--->退出。导致的问题是,登录用户已经提出了,但..._修改windows maxdisconnection time为默认值

计算广告学_高h之交换小敏系列-程序员宅基地

文章浏览阅读3.4w次,点赞2次,收藏17次。Table of Contents1. 在线广告综述1.1. 广告的定义与目的1.2. 在线广告类型1.3. 在线广告简史1.4. 广告有效性原理1.5. 在线广告相关行业协会2. 计算广告基础2.1. 在线广告的技术特点2.2. 计算广告核心问题2.2.1. 在线广告技术课题2.2.2. 在线广告计费模式2.3. 计算广告系统架构2.4. 基础知识准备_高h之交换小敏系列

随便推点

软件测试基础知识(大全)_软件测试基础知识大全-程序员宅基地

文章浏览阅读726次。1、什么是兼容性测试?兼容性测试侧重哪些方面?参考答案:兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什..._软件测试基础知识大全

Junit测试用例按顺序执行_junit test执行顺序-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏6次。Junit测试案例执行按顺序执行有3种方法可以实现,缺省地,testcase执行的时候不是按函数编写顺序执行的。1、数字编码法testcase的函数名尾数为数字,则方法会按字母顺序、数字顺序执行。比如有testFirst1, testFirst2, testFirst3三个测试案例,则三个案例的执行顺序为:testFirst1>testFirst2>testFirst3如果还有三个_junit test执行顺序

IOException : DerInputStream.getLength(): lengthTag=26, too big.-程序员宅基地

文章浏览阅读5.8k次。出现这个错误是我在开发手机网站支付的时候出现的,由于之前的支付功能是即时到账,后来改为了手机网站支付宝。主要是由没有将AlipaySubmit中的buildRequestMysign方法中的RSA.sign(prestr, AlipayConfig.private_key, AlipayConfig.input_charset);中的private_key没有由原先的商户的私钥改为手机网站支付_ioexception : derinputstream.getlength(): lengthtag=26, too big.

flink 异常记录_flink no root exception-程序员宅基地

文章浏览阅读193次。1:java.lang.NoSuchMethodError: scala.Product.initinitinit(Lscala/Product;)V设置对应的scala版本解答:jar包引用和运行时的scala版本不同,如果在开发过程遇到修改了环境配置还有这个问题,应该关闭所有idea窗口再打开才能生效。..._flink no root exception

nacos-0.8.0升级nacso-1.0.0.RC1记录_naocs-0.8.0的client升级到nacos-1.0.0.rc1-程序员宅基地

文章浏览阅读993次。背景2019年3月15日nacos-server发布了1.0.0-RC1版本,为官方第一个release版本,基本可以用于小规模生产环境,以下是我从0.8.0升级到1.0.0-RC1的记录。环境mysql8.0(1.0默认支持8.x版本的mysql了)nacos-all 1.0.0.RC1spring-cloud-alibaba: 0.2.1.RELEASE覆盖nacos-clien..._naocs-0.8.0的client升级到nacos-1.0.0.rc1

Linux 上网络监控工具 ntopng 的安装-程序员宅基地

文章浏览阅读182次。当今世界,人们的计算机都相互连接,互联互通。小到你的家庭局域网(LAN),大到最大的一个被我们称为互联网。当你管理一台联网的计算机时,你就是在管理最关键的组件之一。由于大多数开发出的应用程序都基于网络,网络就连接起了这些关键点。这就是为什么我们需要网络监控工具。ntop 是最好的网络监控工具之一。来自维基百科的 知识“ntop是一个网络探测器,它以与top显示进程般类似的方式显示网络..._linux 安装 pong 工具监听java