欢迎关注 “小白玩转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