Python处理路径神级命令pathlib.Path

本文介绍了作者从2017年开始使用Python中pathlib.Path模块处理文件路径的经历,对比了它与os.path的便利性,重点讲解了Path的常用功能如构造路径、创建文件夹、删除文件、获取文件名和目录路径。

我最早是从2017年开始使用Python的,初期从处理文件数据开始,多数情况下与各式各样的路径和文件操作打交道,一直使用import os下面的os.path.join等函数拼接路径。
最近在读新的Python代码的时候,发现已经有一些人采用pathlib.Path处理文件路径问题,经过一段时间的使用,感觉到比os.path更加方便,作此文记录常用的Path路径函数。

1、构造路径

from pathlib import Path
image_dir = Path('data') / 'image'

2、创建文件夹

from pathlib import Path
image_dir = Path('data') / 'image'
image_dir.mkdir(parents=True, exist_ok=True)

3、删除文件

from pathlib import Path
image_path = Path('data') / 'image' / '001.png'
image_path.unlink()

4、获得文件名

from pathlib import Path
image_path = Path('data') / 'image' / '001.png'
image_name = image_path.name
# 001.png

5、获得目录的路径

from pathlib import Path
image_path = Path('data') / 'image' / '001.png'
folder_name = image_path.parent
# data/image

在这里插入图片描述
图片来源:https://docs.python.org/3/library/pathlib.html

`pathlib.Path` 和 `os.path` 都是 Python 中用于处理文件路径的工具,但它们在设计理念、使用方式等方面存在一定的差异。 ### 设计理念 - **`pathlib.Path`**:采用面向对象的设计理念,将路径视为对象,通过调用对象的方法和属性来操作路径,使代码更加直观和简洁,减少了路径字符串操作中的错误,提高了代码的可读性和可维护性 [^1]。 - **`os.path`**:是一个传统的模块,提供了一系列的函数来处理文件路径,函数式的设计方式使得代码可能会显得较为繁琐,尤其是在处理复杂的路径操作时 [^1]。 ### 代码简洁性 - **`pathlib.Path`**:通过面向对象的方式,使用 `/` 符号进行路径拼接,比传统的字符串操作更简洁。以下是一个路径拼接的示例: ```python from pathlib import Path base_path = Path('data') file_path = base_path / 'subdir' / 'file.txt' print(file_path) ``` - **`os.path`**:使用 `os.path.join()` 函数进行路径拼接,需要传入多个字符串参数,代码相对冗长: ```python import os base_path = 'data' file_path = os.path.join(base_path, 'subdir', 'file.txt') print(file_path) ``` ### 功能特性 - **`pathlib.Path`**:提供了丰富的方法和属性,如 `is_file()`、`is_dir()`、`exists()` 等,方便进行路径信息获取和路径判断。同时,支持通过链式调用的方式执行多个操作,代码更简洁。例如: ```python from pathlib import Path file = Path('test.txt') if file.exists() and file.is_file(): print("文件存在") ``` - **`os.path`**:提供了一系列的函数来完成类似的功能,但需要分别调用不同的函数,代码相对繁琐。例如: ```python import os file = 'test.txt' if os.path.exists(file) and os.path.isfile(file): print("文件存在") ``` ### 跨平台兼容性 - **`pathlib.Path`**:自动处理不同操作系统下路径分隔符的差异,在 Windows、Linux 和 macOS 上都能正常工作,无需开发者手动处理路径分隔符的问题 [^1]。 - **`os.path`**:在不同操作系统下,需要使用不同的路径分隔符,例如在 Windows 上使用 `\`,在 Linux 和 macOS 上使用 `/`,虽然 `os.path.join()` 函数可以帮助处理这个问题,但仍然需要开发者了解不同操作系统的差异 [^1]。 ### 纯路径处理 `pathlib` 还提供了纯路径对象 `pathlib.PurePath()`,用于不实际访问文件系统的路径处理操作。如果处理路径不关心它在当前文件系统上是否存在,使用纯路径对象会更合适 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProfSnail

谢谢老哥嗷

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值