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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值