pathlib

pathlib 的简单介绍

  • 官方定义:Object-oriented filesystem paths(面向对象的文件系统路径)
  • 官方推荐:pathlib是一个从3版本开始就能完全替代os.path的内置库,在python官网中这样说 "对于字符串的低级路径操作,您也可以使用该 os.path模块"

pathlib和os.path的比较

  1. 当需要找多个层级的目录路径时,通过 os.path 需要嵌套写法,如我上面的 project_path ,而 pathlib 可以提供链式写法,简洁明了
  2. os.path 只用于处理路径,如果你想在获取到的路径下做一些事情(如:创建一个目录),你就需要用 os 模块,而 pathlib 可以一站式搞定,将在后面展开讲

从这开始,我们通过os.path和pathlib的比较他们的代码量和实现方式

获取当前文件路径

os模块获取当前文件路径

import os 
v2 = os.getcwd() 
# 输出 F:\moocInterface

pathlib 获取当前文件路径

from pathlib import Path 
v = Path.cwd() 
# 输出 F:\moocInterafce

获取上层、上上层目录

os 获取上上层目录

import os print(os.path.dirname(os.path.dirname(os.getcwd()))) # F:\

很明显用os的写法就是嵌套式调用

pathlib 获取上上层目录

from pathlib import Path print(Path.cwd().parent.parent)  # F:\

而用pathlib就是链式调用

拼接目录

场景:在当前目录的父级目录拼接 test 文件夹下的 test.txt

os 拼接目录

import os 
os.path.join(os.path.dirname(os.getcwd()),"test","test.txt")

pathlib 拼接目录

from pathlib import Path 
paths = ["test","test.txt"] 
Path.cwd().parent.joinpath(*paths)

创建文件夹并重命名

os模块

pathlib

import os
import os.path

# 创建 peoject/test目录
os.makedirs(os.path.join('project', 'test'), exist_ok=True)

# 将test.txt 重命名为 project/tests.txt
os.rename('test.txt', os.path.join('project', 'tests.txt'))

pathlib模块的Path对象

from pathlib import Path

# 创建 project/test目录
Path('project/test').mkdir(parents=True, exist_ok=True)

# 将test.txt 重命名为 project/tests.txt
Path('test.txt').rename('project/test.txt')

os和pathlib的对应关系

pathlib

pathlib的常用基本方法

Path.parents  # 返回所有上级目录的列表 
Path.parts  # 分割路径 类似os.path.split(), 不过返回元组 Path.root  # 返回路径的根目录

pathlib的常用基本方法

pathlib

Path.is_dir()  # 判断是否是目录
Path.is_dir()  # 是否是文件
Path.exists()  # 判断路径是否存在
Path.open()  # 打开文件(支持with)
Path.resolve()  # 返回绝对路径
Path.cwd()  # 返回当前目录
Path.iterdir()  # 遍历目录的子目录或者文件
Path.mkdir()  # 创建目录
Path.rename()  # 重命名路径
Path.unlink()  # 删除文件或目录(目录非空触发异常)
Path.joinpath()  # 拼接路径
上一篇:ReSharper 8 & 9


下一篇:[LeetCode] Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期