Python | Path 让文件路径提取变得简单(含代码)

本文介绍了Python的pathlib模块,用于简化文件系统路径操作。通过示例展示了如何提取文件名、父路径、后缀、无后缀文件名、更改后缀、遍历文件、组合路径、判断绝对路径、文件夹或文件类型、路径存在性以及使用glob进行匹配。使用pathlib可以减少代码量并提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创声明

本文为 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
    一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,共同进步!
    优快云: HinGwenWoong
    原文链接:Python | Path 让文件路径提取变得简单(含代码)

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

### JDK 21 和 Maven 的配置及兼容性 对于构建基于最新技术栈的应用程序而言,确保所使用的工具链版本相互兼容至关重要。当涉及到 JDK 21 和 Apache Maven 组合时,这种兼容性的确认尤为关键。 #### 配置 pom.xml 文件中的编译插件来指定 JDK 版本 为了使项目能够利用 JDK 21 提供的新特性并保持向后兼容性,在 `pom.xml` 中定义合适的源码和目标字节码级别是非常必要的[^1]: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>21</source> <target>21</target> <release>21</release> </configuration> </plugin> </plugins> </build> ``` 上述 XML 片段展示了如何通过设置 `<source>`、`<target>` 及 `<release>` 参数为 "21" 来告知编译器应采用哪个版本的标准库以及生成何种级别的 JVM 字节码。 #### 设置全局属性以控制字符集编码 除了正确指定了 Java 编译参数外,还需要关注项目的文本资源(如源文件和其他静态数据)应该使用哪种字符编码方式处理。通常推荐的做法是在 POM 文件里声明 UTF-8 作为默认编码标准: ```xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> ``` 这样做可以有效防止由于不同平台间存在的本地化差异而导致潜在的乱码问题发生。 #### 关于 Maven 对 JDK 21 支持的状态 Apache Maven 官方团队一直在努力跟进最新的 JDK 发布情况,并积极测试其软件包与各主要发行版之间的互操作性。截至当前为止,Maven 已经能够在大多数情况下良好支持 JDK 21;然而具体到某些特定功能或者第三方依赖项上可能会存在例外情形。因此建议开发者密切关注官方公告和技术社区反馈信息以便及时获取更新通知[^2]。 #### IDEA 开发环境中关于 JDK 和 Maven 构建行为的选择 为了让集成开发环境更好地配合命令行工具工作,可以在 IntelliJ IDEA 中调整相关选项使得所有的构建/运行动作都委托给外部的 Maven 实例执行而不是内置模拟器完成。这有助于提高跨平台一致性并且简化调试流程。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值