在拜读别人的代码时,发现了pathlib这个模块的使用,其能够将路径字符串转化为路径对象,在路径对象中,也包含了很多有用的方法供我们调用,其与os.path的功能几乎无差,但是由于直接将路径变为对象,直接使用对象本身的方法就能够完成很多变换的功能,同时其也是默认安装在python3较新的版本中的,因此可以说是十分便捷了。
本文将简要介绍pathlib的基本使用方式,以及其中与os.path中方法的对应。
Purepath类
pathlib中主要有两个类,PurePath和Path,这两个类分别负责对文本形式的路径的处理(即PurePath类处理的路径只是文本形式的,都是将路径字符串进行各种变换或组合的方法,并没有判断真实路径的方法)和对真实存在的路径进行处理(可以判断文件是否真实存在,以及对真实路径进行处理等)。
先介绍一下PurePath类,此类相对较为简单,其在windows系统和linux系统中分别拥有不同的子类即PureWindowsPath和PurePosixPath,这是因为windows和linux系统的路径表示形式不同。
from pathlib import Purepath
p1 = Purepath('C://Windows', 'some/path', 'bar')
# 生成了实例 :PureWindowsPath('C:/Windows/some/path/bar')
# 这里生成实例的方法就不多举例了,实际上就是此方法能将一些字符组合为当前系统下正确的一些路径
# 但并不保证此路径一定存在
# Purepath也具有一些方法,如root获取字符串中的根路径,获取文件名(base),match用于与通配符匹配,
# parents获取文件所处目录,driver获取盘符(如C:),parts将路径通过斜杠进行划分,
# isabsolute判断是不是绝对路径,但要注意这些方法都只是对类实例结果进行
# 处理判断,并不会与真实文件或目录进行匹配。
# 这些方法这里也不单独介绍了。
Path类
Path类实际上是Purepath的子类,但其具有的功能更为强大,这里将常用的方法与os的方法对比并列为列表(参考官方文档),但要注意两种方法的结果可能并不完全一样,在调用时需要先尝试看看结果:
os和os.path | pathlib | 方法功能介绍 |
---|---|---|
os.path.abspath() | Path.resolve() | 返回任意路径的绝对路径 |
os.chmod() | Path.chmod() | 修改文件权限 |
os.makedirs(),os.mkdir() | Path.mkdir() | 直接创建文件夹,若已存在那么会报错 |
os.rename() | Path.rename() | 重命名文件或文件夹 |
os.replace() | Path.replace() | 重命名文件或文件夹 |
os.rmdir() | Path.rmdir() | 移除目录 |
os.remove(),os.unlink() | Path.unlink() | 移除文件或符号链接 |
os.getcwd() | Path.cwd() | 获取当前的工作目录 |
os.path.exists() | Path.exists() | 判断路径是否真实存在 |
os.path.expanduser() | Path.expanduser() 和 Path.home() | 将例如~符号这样的符号转换为当前user,就变为了/home/user/work这样的目录结构 |
os.listdir() | Path.iterdir() | 获取当前目录下的文件及目录,但是这里是iter对象 |
os.path.isdir() | Path.is_dir() | 判断是否为目录 |
os.path.isfile() | Path.is_file() | 判断是否为文件 |
os.path.islink() | Path.is_symlink() | 判断是否有符号链接 |
os.link() | Path.hardlink_to(target) | 设置一个硬连接到target |
os.symlink() | Path.symlink_to(target) | 设置一个符号连接到target |
os.readlink() | Path.readlink() | 返回之前设置的符号链接所指向的路径 |
os.path.relpath() | Path.relative_to(target) | 判断路径与target间是否是相对的 |
os.stat() | Path.stat(),Path.owner(), Path.group() | 获取此路径的一些信息 |