相对于 os.path 来说,Pathlib 极大地简化了路径相关的操作。举个例子来说:
获取当前文件路径下的 default.yaml 文件
import os os.path.join(os.path.dirname(__file__), "default.yaml")
只需要:
from pathlib import Path Path(__file__).parent / "default.yaml"
不难看出,pathlib 有几个优点:
- 字符少了很多,出 bug 的地方就少了很多;
- 和操作系统一样,pathlib 直接使用路径分隔符
/
来操作,而不是 join 的两个参数; - 非常符合直觉,从左到右阅读。而 os.path 使用函数参数,需要来回跳跃理解。相比之下,Pathlib 阅读起来很清晰。
Python3 标准库中所有接受 str 作为路径参数的地方,现在都可以接受一个 path 对象了。如果你使用的第三方库只接受 str 作为参数, 可以通过 path_str = str(path)
来转化一下。
Pathlib 的其他常用方法:
from pathlib import Path cwd = Path.cwd() # 获取当前目录 home = Path.home() # 获取家目录,比如 /home/ubuntu path = Path("/home/yifei") # 创建一个新的 path 对象 path.is_dir() # 是否是目录 path.is_file() # 是否是普通文件 path.exist() # 路径是否存在 path.resolve() # 解析成绝对路径,比如 Path(".").resolve() 相当于 Path.cwd() path.mkdir(parent=True, exists_ok=True) # 类似 mkdir -p # 遍历目录 for child in path.iterdir(): print(child) # 除此之外,还有几个很甜的方法,省去了 with open 语句 path = Path("/home/ubuntu/readme.txt") text = path.read_text() path.write_text(text) path = Path("/home/ubuntu/image.png") image = path.read_bytes() path.write_bytes(image) >>> path PosixPath('/home/ubuntu/test.md') >>> path.name 'test.md' >>> path.stem 'test' >>> path.suffix '.md' >>> path.parent PosixPath('/home/ubuntu') >>> path.parent.parent PosixPath('/home') >>> path.anchor '/'
在这个注意力涣散的年代,想要经常写一些长篇大论的帖子实在太难了,可能一个月才能憋出一篇。不如分享写简单但是有用的知识点,或许还能经常更新。
以上就是全部内容啦。