文件处理 pathlib 模块

发布于:2024-06-05 ⋅ 阅读:(160) ⋅ 点赞:(0)

正文

将文件名称改写为文件目录

import pathlib as pl


file_name = 'data1.csv'
path = pl.PurePath(file_name)
print(path)
print(type(path))

sys_path = r'C:\Users\Panda\Desktop\Data\data1.csv'
path = pl.PurePath(sys_path)
print(path)
print(type(path))
"""
result:
data1.csv
<class 'pathlib.PureWindowsPath'>
C:\Users\Panda\Desktop\Data\data1.csv
<class 'pathlib.PureWindowsPath'>
"""

可以看到,这里的 path 类型均为 <class 'pathlib.PureWindowsPath'>,这其实表示的是,我们当前的文件目录是位于 Windows 系统上的目录。

文件目录拼接

那么使用 pathlib 包有什么好处呢?它作为一种高级的文件操作包,相较于传统的 os 模块,可以使得文件操作变得非常容易。

import pathlib as pl

sys_path = r'C:\Users\Panda\Desktop\Data'
file_name = 'data1.csv'
path = pl.PurePath(sys_path, file_name)
print(path)
print(type(path))
"""
result:
C:\Users\Panda\Desktop\Data\data1.csv
<class 'pathlib.PureWindowsPath'>
"""

可以看到,此时我们将文件夹目录和文件名称进行了拼接,相当于使用了 os.path.join() 方法,是不是特别简单呢?

获取每一层文件目录

import pathlib as pl

path = pl.PurePath(r'C:\Users\Panda\Desktop\Data\'data1.csv')
parts = path.parts
print(path)
print(parts)
print(parts[0])

"""
result:
C:\Users\Panda\Desktop\Data\'data1.csv
('C:\\', 'Users', 'Panda', 'Desktop', 'Data', "'data1.csv")
C:\
"""

通过这种方式,我们可以获取到当前文件所在每一级目录的名称,后续操作起来就更为容易了。相比于 os 模块中往往需要通过使用字符串切片来获取文件次级目录就简单多了。

获取当前驱动器,根和驱动器与根的结合

import pathlib as pl

path = pl.PurePath(r'C:\Users\Panda\Desktop\Data\'data1.csv')
print(path.drive) # 获取当前驱动器,或者说文件位于哪个盘下面
print(path.root) # 获取驱动器名称与文件夹之间的字符串
print(path.anchor) # 获取驱动器与驱动器名称和文件夹之间的字符串的结合
"""
result:
C:
\
C:\
"""

获取次级完整路径

import pathlib as pl

path = pl.PurePath(r'C:\Users\Panda\Desktop\Data\'data1.csv')
print(path.parent)
print(path.parents[0])
print(path.parents[1])
print(path.parents[2])
print(path.parents[3])
"""
result:
C:\Users\Panda\Desktop\Data
C:\Users\Panda\Desktop\Data
C:\Users\Panda\Desktop
C:\Users\Panda
C:\Users
"""

获取文件名称加后缀名,文件后缀名以及文件的多个后缀名和除了后缀名剩下的文件名称主体部分

import pathlib as pl

path = pl.PurePath(r'C:\Users\Panda\Desktop\Data\'data1.csv')
print(path.name)
print(path.suffix)
print(path.suffixes)
print(path.stem)
"""
result:
'data1.csv
.csv
['.csv']
'data1
"""

suffixes 属性用来获取文件的多个后缀名,并将它们按照序列存放在列表对象中,本例中恰好有一个后缀名,因此,仅一个后缀名被存放进了列表中。

判断路径是相对路径还是绝对路径

有些时候,我们需要知道我们当前引用的路径是相对路径还是绝对路径,可以使用下面的代码。

import pathlib as pl

absolute_path = pl.PurePath(r'C:\Users\Panda\Desktop\Data\'data1.csv')
relative_path = pl.PurePath(r'data1.csv')
print(pl.PurePath.is_absolute(absolute_path))
print(absolute_path.is_absolute())
print(absolute_path.is_relative_to(relative_path))
print(relative_path.is_relative_to(relative_path))
"""
result:
True
True
False
True
"""

还有很多较为常用的方法,这里仅作抛砖引玉,熟练掌握这个模块后,os 模块就让它爱干啥干啥去吧。

感兴趣的小伙伴可以继续学习 官方文档

如果大家觉得有用,就请点个赞吧~