Python文件系统模块pathlib库

目录
  • 一、pathlib库官方定义
  • 二、pathlib秘籍
    • 1、 基本用法
    • 2、 基本属性
    • 3、 改变路径
    • 4、 拼接路径
    • 5、 测试路径
    • 6、 其他方法
  • 三、os和pathlib.Path的区别
    • 1、 获取当前文件路径
    • 2、 获取上层/上层目录
    • 3、 路径拼接
    • 4、 其他封装
  • 四、pathlib.PurePath的使用
    • 1、 PurePath.match
    • 2、 PurePath的子类:PurePosixPath(非Windows系统)、PureWindowsPath

一、pathlib库官方定义

pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。

路径类在纯路径之间划分,纯路径提供纯粹的计算操作而没有 I / O,以及具体路径,它继承纯路径但也提供 I / O 操作。

二、pathlib秘籍

1、 基本用法

  • Path.iterdir() # 遍历目录的子目录或者文件
  • Path.is_dir() # 判断是否是目录
  • Path.glob() # 过滤目录(返回生成器)
  • Path.resolve() # 返回绝对路径
  • Path.exists() # 判断路径是否存在
  • Path.open() # 打开文件(支持with)
  • Path.unlink() # 删除文件或目录(目录非空触发异常)

2、 基本属性

  • Path.parts # 分割路径 类似os.path.split(), 不过返回元组
  • Path.drive # 返回驱动器名称
  • Path.root # 返回路径的根目录
  • Path.anchor # 自动判断返回drive或root
  • Path.parents # 返回所有上级目录的列表

3、 改变路径

  • Path.with_name() # 更改路径名称, 更改最后一级路径名
  • Path.with_suffix() # 更改路径后缀

4、 拼接路径

  • Path.joinpath() # 拼接路径
  • Path.relative_to() # 计算相对路径

5、 测试路径

  • Path.match() # 测试路径是否符合pattern
  • Path.is_dir() # 是否是文件
  • Path.is_absolute() # 是否是绝对路径
  • Path.is_reserved() # 是否是预留路径
  • Path.exists() # 判断路径是否真实存在

6、 其他方法

  • Path.cwd() # 返回当前目录的路径对象
  • Path.home() # 返回当前用户的home路径对象
  • Path.stat() # 返回路径信息, 同os.stat()
  • Path.chmod() # 更改路径权限, 类似os.chmod()
  • Path.expanduser() # 展开~返回完整路径对象
  • Path.mkdir() # 创建目录
  • Path.rename() # 重命名路径
  • Path.rglob() # 递归遍历所有子目录的文件

三、os和pathlib.Path的区别

相对于 os 模块的 path 方法,Python3 标准库 pathlib 模块的 Path 对路径的操作会更简单。

1、 获取当前文件路径

使用 os 模块时,通过 getcwd() 方法可以直接获取当前文件路径

在 Pycharm 中,可以使用 os.path.dirname(__file__) 获取当前文件路径,因为 Python 并没有提供 __file__ 这个概念,他是 Pycharm 提供的:

import os

print(os.getcwd())  # C:\Users\bobin.yang\PycharmProjects\untitled
print(os.path.dirname(__file__))  # C:/Users/bobin.yang/PycharmProjects/untitled

在 pathlib 模块中,通过 Path.cwd() 方法可以直接获取当前文件路径,我们可以动手试一试:

import pathlib

print(pathlib.Path.cwd())  # C:\Users\bobin.yang\PycharmProjects\untitled

通过 Pycharm 我们可以使用快捷键 ctrl+鼠标左键 点击查看该方法的详细介绍。

从上图中可以看出 cwd() 方法不过是对 os 库中 getcwd() 方法进行了封装,看起来好像更差劲了,但是官方的推出一定不是子虚乌有的,现在让我们一起来揭秘。

2、 获取上层/上层目录

上面那个案例仿佛让 pashlib 库的使用变得更加复杂了,为了揭秘,我们只能一同感受下 pathlib 库的构成,了解 pathlib 库如何带给我们便捷。

在 os 模块中,如果我们要获取某一个文件的父目录,os 模块的写法为:

import os

print(os.path.dirname(os.path.dirname(os.getcwd())))  # C:\PycharmProjects

在 pathlib 库中,可以通过这样简洁方法实现:

import pathlib

print(pathlib.Path.cwd().parent)   # C:\PycharmProjects

并且,如果你需要找他爷爷,是不是再来一个 .parent 就行了。相比较 os 模块的 os.path.dirname() 是不是方便太多太多了?

3、 路径拼接

如果你要在他父目录中拼接路径,通过 os 模块你可能需要写这么一长串代码:

import os

print(os.path.join(os.path.dirname(os.getcwd()), '路径拼接', '真麻烦'))  # C:\PycharmProjects\路径拼接\真麻烦

当你使用 pathlib 的时候,我们一起来感受他的便捷之处吧!

# /Users/mac/test.py
import os

paths = ('路径拼接', '真麻烦')
print(pathlib.Path.cwd().parent.joinpath(*paths))  # C:\PycharmProjects\路径拼接\真麻烦

通过 pathlib 库拼接路径,你可以很方便的调节他在他祖辈的位置,妙哉。

4、 其他封装

pathlib 封装了很多的 os.path 中的方法,如下所示:

  • os.path.expanduser() --> pathlib.Path.home()
  • os.path.expanduser() --> pathlib.Path.expanduser()
  • os.stat() --> pathlib.Path.stat()
  • os.chmod() --> pathlib.Path.chmod()

四、pathlib.PurePath的使用

上一节的操作大部分都是通过 pathlib 库中的 Path 实现,其实他还有一个更加高大上的模块,也就是我们这一节的主角:pathlib.PurePath

PurePath 是一个纯路径对象,纯路径对象提供了实际上不访问文件系统的路径处理操作。

有三种方法可以访问这些类,我们也称之为 flavor 。

1、 PurePath.match

下面让我们来实现一个神奇的功能,判断当前的路径下是否有符合'*.py'规则的文件。

import pathlib

print(pathlib.PurePath(__file__).match('*.py'))  # True

输出为什么会是 True 呢?因为当前文件夹下不就有一个 test.py 吗?

2、 PurePath的子类:PurePosixPath(非Windows系统)、PureWindowsPath

看见 pathlib.PurePath 后面跟着 match,那是不是能说明他是个对象,而不是一个单纯的路径字符串,因此我们可以试着打印 pathlib.PurePath 看一看。

import pathlib

os_path = os.path.dirname(__file__)
print(os_path)  # C:/PycharmProjects/untitled

pure_path = pathlib.PurePath(__file__)
print(pure_path)  # C:\PycharmProjects\untitled\run.py
print(type(pure_path))  # <class 'pathlib.PureWindowsPath'>

print(pathlib.PurePath(__file__).match('*.py'))  # True

通过打印 os.path 获取当前路径的结果,得到一个路径字符串;而通过 pathlib.PurePath 则获得了一个 PurePosixPath 对象,并且由此得到的路径包括了当前文件 run.py。

到此这篇关于Python文件系统模块pathlib库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python3利用pathlib替代os.path的方法实例

    目录 前言 pathlib 库 pathlib 获取文件路径 Path.cwd 获取当前文件夹路径 获取当前文件路径 获取 Path 对象绝对路径 一些常用的获取文件属性 获取上层,上上层目录 获取用户home目录 判断文件,文件夹 is_file()判断是不是文件 is_dir() 判断是否是文件夹 exists() 判断文件 或文件夹是否存在 is_absolute() 判断是否是绝对路径 joinpath 拼接目录 iterdir()遍历文件目录 glob() 和 rglob() 模式匹配

  • python3 pathlib库Path类方法总结

    这篇文章主要介绍了python3 pathlib库Path类方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.调用库 from pathlib import Path 2.创建path对象 p = Path(file) 3.方法总结 p.cwd() # 获取当前路径 p.stat() # 获取当前文件的信息 p.exists() # 判断当前路径是否是文件或者文件夹 p.glob(filename) # 获取路径下的所有符合filen

  • Python标准库pathlib操作目录和文件

    目录 pathlib 基本组件 常用属性和基本方法 总结 学习 Python 时,尤其是在进行文件操作和数据处理时,经常会处理路径问题.最常用和常见的是 os.path 模块,它将路径当做字符串进行处理,如果使用不当可能导致难以察觉的错误,而且代码很难跨平台复用.pathlib 就是一个非常棒的Python标准库,超级好用. pathlib模块提供了一种在 POSIX 系统(如 Linux 和 Windows)下运行良好的高级抽象,它抽象了资源路径和资源命名结构,把文件系统接口从os模块中隔离出

  • python文件与路径操作神器 pathlib

    pathlib中封装了PurePath和Path类,前者用于处理路径风格的字符串:后者是前者的子类,可直接处理路径. PurePath最甜的功能是重载了运算符,从而可以实现类似下面这种 >>> from pathlib import Path, PurePath >>> pp = PurePath("E:/") >>> pp PureWindowsPath('E:/') >>> pp/"test"

  • 对python3中pathlib库的Path类的使用详解

    用了很久的os.path,今天发现竟然还有这么好用的库,记录下来以便使用. 1.调用库 from pathlib import 2.创建Path对象 p = Path('D:/python/1.py') print(p) #可以这么使用,相当于os.path.join() p1 = Path('D:/python') p2 = p1/'123' print(p2) 结果 D:\python\1.py D:\python\123 3.Path.cwd() 获取当前路径 path = Path.cw

  • Python中的pathlib库使用详解

    目录 1. pathlib库介绍 2. pathlib库下Path类的基本使用 2.1 获取文件名 2.2 获取文件前缀和后缀 2.3 获取文件的文件夹及上一级.上上级文件夹 2.4 获取该文件所属的文件夹及其父文件夹 2.5 文件绝对路径 2.6 获取当前工作目录 2.7 获取用户 2.8 获取文件详细信息 2.9 检查目录或者文件是否存在 2.10 检查指定指定路径是否为folder或者file 2.11 将相对路径转换为绝对路径 2.12 遍历一个目录 2.13 获取所有符合pattern

  • python中pathlib模块的基本用法与总结

    前言 相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic.但是它不单纯是为了简化操作,还有更大的用途. pathlib 是Python内置库,Python 文档给它的定义是:The pathlib module – object-oriented filesystem paths(面向对象的文件系统路径).pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统. 更多详细的内容可以参考官方文档:https://docs.python.

  • Python pathlib模块使用方法及实例解析

    pathlib 模块中包含的是一些类,它们的继承关系如图 1 所示. 图 1 pathlib模块中类的组织结构 图 1 中,箭头连接的是有继承关系的两个类,以 PurePosixPath 和 PurePath 类为例,PurePosizPath 继承自 PurePath,即前者是后者的子类. pathlib 模块的操作对象是各种操作系统中使用的路径(例如指定文件位置的路径,包括绝对路径和相对路径).这里简单介绍一下图 1 中包含的几个类的具体功能: PurePath 类会将路径看做是一个普通的字

  • 详谈Python3 操作系统与路径 模块(os / os.path / pathlib)

    以下代码以Python3.6.1 / windows10为例 Less is more! #!/usr/bin/env python # coding=utf-8 __author__ = 'Luzhuo' __date__ = '2017/5/7' import os def os_demo(): # 执行命令 dirs = os.popen("dir").read() print(dirs) # 打印目录树 dirs_info = os.scandir() for info in

  • Python中的pathlib.Path为什么不继承str详解

    起步 既然所有路径都可以表示为字符串,为什么 pathlib.Path 不继承 str ? 这个想法的提出在 https://mail.python.org/pipermail//python-ideas/2016-April/039475.html 可以看到,其中,还提出了将 p'/some/path/to/a/file' 返回 path.Path 实例的想法. 路径都是字符串吗? 从面向对象的继承的思想来看,如果 Path 继承自 str ,那么所有的路径都应该是字符串.但所有的路径都是字符

随机推荐