8个例子掌握Python的Pathlib模块

欢迎关注 “小白玩转Python”,发现更多 “有趣”

引言

Python 的 pathlib 模块使处理文件路径变得非常简单和高效。os.path模块也可以用于处理路径名操作。不同之处在于path模块创建表示文件路径的字符串,而pathlib创建路径对象。

使用路径对象而不是字符串的一个重要优点是,我们可以在路径对象上调用方法。我们将在示例中看到,Pathlib模块提供了许多有用的方法。

在本文中,我们将通过8个例子来掌握如何使用pathlib模块。

1. 创建路径对象

让我们从导入pathlib开始,并创建一个path对象。

import pathlib
pathlib.Path()
PosixPath('.') #relative path to the current folder

如果我们在没有参数的情况下调用Path方法,它将创建一个到当前正在工作的文件夹的相对路径(路径可以描述为相对路径或绝对路径)。

· 相对路径: 相对于我们当前工作的文件夹的路径

· 绝对路径: 相对于操作系统的路径

2. 通过传递文件夹和文件名创建路径

我们可以通过将文件夹和文件名作为单独的字符串传递来调用path方法。假设文件夹中有一个”names”文件夹,在”names”文件夹中,我有一个名为”file1.json”的文件。下面将创建一个路径对象,它表示该文件的相对路径。

p = pathlib.Path("names", "file1.json")
p
PosixPath('names/file1.json')

3. 将相对路径转换为绝对路径

在某些情况下,我们可能需要使用绝对路径而不是相对路径。使用resolve方法将相对路径转换为绝对路径。

我们可以在先前创建的path对象上调用它。

p.resolve()
PosixPath('/home/soner/Desktop/data/names/file1.json')

4. 使用路径阅读文本

Pathlib模块有一个方法,可用于读取文件中的文本。

p.read_text()
'{\n    "John": 1,\n    "Jane": 2\n}'

我们可以看到file1.json的内容,但是它的格式并不规整。可以通过Json模块与pathlib一起使用来解决。

import json
json.loads(p.read_text())
{'John': 1, 'Jane': 2}

5. 基于另一路径的相对路径

我们可以创建一条相对于另一条路径的路径。

p1 = pathlib.Path("names", "file1.json")
p2 = pathlib.Path("names")
p_relative = p1.relative_to(p2)
p_relative
PosixPath('file1.json')

p_relative是p2(名称文件夹)到p1(名称文件夹内的file1)的相对路径。也可以将其视为基于其他路径(而不是操作系统)的绝对路径。

6. 比较两条路径

如果两个路径表示相同的文件,我们可以使用samefile方法进行比较。路径可以是相对的,也可以是绝对的。

考虑以下两条路径。

p1 = pathlib.Path("names", "file1.json")
p2 = p1.resolve()

P2是p1的绝对路径。

p1.samefile(p2)
True

可以发现这两个路径是相同的。

7. 文件?目录?

我们可以检查一个路径是代表一个文件还是一个目录。

p1.is_dir()
False
p1.is_file()
True

路径 p1表示一个json文件,所以is_file返回True。

8. 用pathlib移动文件

Pathlib模块也可用于移动文件。

在data文件夹中有file1.json。

p = pathlib.Path("names", "file1.json")

现想将file1移动到id文件夹中,并将其重命名为file1-a。

p.rename(pathlib.Path("id", "file1-a.json"))

file1不再存在于data文件夹中。我们可以使用exists方法检查它。

p
PosixPath('names/file1.json')
p.exists()
False

总结

Pathlib模块提供了处理文件路径的方便快捷的方法。Pathlib将路径作为对象创建,因此它比os.path模块更受欢迎。上面已经介绍了最常用的pathlib方法,如果你想了解更多,可以访问官方文档哦~

·  END  ·

HAPPY LIFE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值