路径管理库pathlib在python 3.4版本之后支持,它可以让我们采用面向对象的方式来处理路径,带来十分轻快简洁的体验。可以戳此查看官方文档。
下面介绍一些os.path的常用场景,以及pathlib的替代方案。
仅在第一个示例显示import的内容
1.获取当前路径的绝对路径
import os.path
from pathlib import Path
os.path.abspath(__file__)
# 替换为
Path(__file__).resolve()
2.获取文件名
FILE_NAME = os.path.basename(os.path.abspath(__file__))
# 替换为
FILE_NAME = Path(__file__).resolve().name
3.获取父目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 替换为
BASE_DIR = Path(__file__).resolve().parent
4.获取纯文件名和后缀
my_path = 'aa/bb/cc/dd.tar.gz'
pure_name = os.path.splitext(os.path.basename(my_path))[0] # dd.tar
suffix = os.path.splitext(os.path.basename(my_path))[-1] # .gz
# 替换为
pure_name = Path(my_path).stem # dd.tar
suffix = Path(my_path).suffix # .gz
suffixes = Path(my_path).suffixes # ['.tar', '.gz']
5.属性判断和创建
my_path = 'aa/bb/cc/dd.tar.gz'
os.path.exists(my_path) # 是否存在
os.path.isdir(my_path) # 是否为目录
os.path.isfile(my_path) # 是否是文件
os.mkdir('a/') # 创建单级目录
os.makedires('a/b/c/d') # 创建多级目录
# 替换为
Path(my_path).exists() # 是否存在
Path(my_path).is_dir() # 是否为目录
Path(my_path).is_file() # 是否是文件
Path('a/').mkdir() # 创建单级目录
Path('a/b/c/d').mkdir(parents=True) # 创建多级目录
6. 路径拼接
base_dir = 'a/b/c'
full_path = os.path.join(base_dir, 'd', 'e.txt') # a/b/c/d/e.txt
# 替换为
full_path = Path(base_dir).joinpath('d').joinpath('e.txt')
# 或者
full_path = Path(base_dir) / 'd' / 'e.txt'
7.打开文件
with open('./a.txt', 'w+') as fa:
...
# 替换为
with Path('a.txt').open('w+') as fa:
...
总而言之,替换成pathlib会有更好的体验,建议升级使用这个全新的库。
网友评论