Python3 使用pathlib替代os.path

路径管理库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会有更好的体验,建议升级使用这个全新的库。

你可能感兴趣的:(Python3 使用pathlib替代os.path)