Python pathlib模块基础

551 阅读5分钟

玩转Python

这是我参与8月更文挑战的第12天,活动详情查看: 8月更文挑战

复习回顾

Python对文件I/O操作的相关模块,我们前面已经学习一些内容

在以上的模块中,我们对文件/目录操作有了一定地掌握,开始学习之前我们先来巩固一个小知识点 (⚠️:如果小伙伴们对绝对路径和相对路径熟悉的话,可以直接跳过看)

🌟小知识:绝对路径和相对路径

  • 绝对路径:总是从根文件夹开始

    (1)Window 系统中以盘符(C:、D:)作为根文件夹,

    (2)OS X 或者 Linux 系统中以 / 作为根文件夹。

  • 相对路径:指的是文件相对于当前工作目录所在的位置。

    (1).\ 表示当前所在目录

    (2)..\ 表示当前所在目录的父目录

🎵🎵废话不多说,我们来学习pathlib模块相关的知识吧,Let's go~

1. pathlib模块概述

pathlib 模块提供了一组文件系统路径的类,其语义适用于不同的操作系统。

pathlib 模块提供相关类的关系图如下:

pathlib模块中类的组织结构

🔔 剪头连接的是表示有继承关系。例如PurePath是PurePosixPath和PureWindowsPath的父类

📢重要说明:

  • pathlib模块主要是有两个主要的类Purepath(纯路径)和Path(具体路径)

  • PurePath类对路径看成是一个普通的字符串。

    (1)可以连接多个字符串拼接成当前系统的路径格式

    (2)可判断任意两个路径是否相等

    (3)PurePath只操作路径,路径的真实性不做判断

    (4)PurePath有两个子类,PurePosixPath类用于操作UNIX(MAC OS)系统的路径,PurewindowsPath类用于操作Windows系统的路径

  • Path类对真实路径进行操作。

    (1) Path类提供了判断路径是否存在的方法

    (2) Path也有两个子类,PosixPath类用于操作UNIX(MAC OS)系统的路径,WindowsPath类用于操作Windows系统的路径

  • purepath 和 Path 最根本区别在于

    (1) purepath 的本质依然是字符串

    (2) path 则会真正访问底层的文件路径,因此它提供来属性和方法来访问底层的文件系统的方法

🔔 UNIX系统路径格式: 根路径是斜杠(/),路径分隔符也是斜杠(/);Windows系统路径格式:系统根路径是盘符(如C:),分隔符是反斜杠(\)

2. Pathlib模块相关方法

Pathlib 模块提供PurePath、Path以及它们的子类,共六个类模块

作用
Pathlib.PurePath纯路径,代表当前系统的路径格式
Pathlib.PurePosixPath纯路径的子类,用于UNIX系统
Pathlib.PureWindowsPath纯路径的子类,用于Windows系统
Pathlib.Path纯路径的子类,对真实路径进行操作
Pathlib.PosixPathPath和PurePosixPath的子类,用于UNIX系统
Pathlib.WindowsPathPath和PureWindowsPath的子类,用于Windows系统

📣 PuerPath类提供主要实例方法/属性如下:

方法/属性作用
PurePath.drive返回路径字符串中的驱动器盘符。
PurePath.root返回路径字符串的根路径
PurePath.anchor返回路径字符串的盘符和根路径
PurePath.parents返回当前路径全部父路径
PurePath.name返回当前路径的文件名
PurePath.suffixes返回当前路径中的文件扩展名列表
PurePath.suffix返回当前文件扩展名
PurePath.as_posix()切换成UNIX系统路径格式(斜杠)
PurePath.as_uri()当前路径转换成URL。只支持绝对路径
PurePath.is_absolute()判断是否为绝对路径
PurePath.joinpath(*other)将多个路径链接在一起(斜杠/连接符)
PurePath.match(pattern)判断当前路径是否匹配指定通配符。
PurePath.relative_to(*other)计算路当前径相对other的路径结果
PurePath.with_name(name)将当前路径中的文件名替换成新文件名。如果当前路径中没有文件名,则会引发 ValueError。
PurePath.with_suffix(suffix)将当前路径中的文件后缀名替换成新的后缀名。如果当前路径中没有后缀名,则会添加新的后缀名。

📣 Path类提供主要实例方法/属性如下:

方法作用
Path.cwd()返回当前目录路径
Path.stat()返回路径的相关信息
Path.chmod()改变文件的模式和权限
Path.exists()文件路径是否存在
Path.mkdir()新键给路径的目录
Path.glob(pattern)给定符号进行解析路径
Path.group()返回文件的用户组
Path.is_dir()路径是否是目录
Path.is_file()判断路径是否指向文件
Path.is_mount()判断路径是否已挂载,只支持UNIX系统
Path.is_symlink()判断路径是否指向符号链接

3. 小试牛刀

pathlib模块提供比os.path 更简单易用的方法去操作路径,本次我们来实操一下:

import pathlib


# purepath

Pure = pathlib.PurePath('f:\JueJin\juejin.txt')

print("purepath:",Pure)
print("Pure root:",Pure.root)
print("Pure Parents:",Pure.parents)
print("Pure 扩展名:",Pure.suffixes)
print("Pure type:",type(Pure))


Pa = pathlib.Path("f:\JueJin\juejin.txt")

print("Path:",Pa)
print("Pa root:",Pa.root)
print("Pa parents:",Pa.parents)
print("Pa 扩展名:",Pa.suffixes)
print("Pa type:",type(Pa))

# Path 多了一些判断路径的方法

print("pa exists:",Pa.exists())
print("Pa is_dir:",Pa.is_dir())
print("Pa is_file:",Pa.is_file())

pathlib实操结果

总结

本期,我们学习Pathlib模块对各种操作系统中使用的路径操作,重点有两点

  • PurePath纯路径将路径当着一个普通的字符串,只用来操作路径,不判断路径的真实性
  • path类提供判断路径是否真实有效的方法

如果在工作项目需要迁移多系统的,在需要对文件路径进行操作的,我们可以使用pathlib模块,方便简洁,易于项目维护。

以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹🌹🌹🌹✈️