返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的pathlib库使用详解
  • 289
分享到

Python中的pathlib库使用详解

2024-04-02 19:04:59 289人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录1. pathlib库介绍2. pathlib库下Path类的基本使用2.1 获取文件名2.2 获取文件前缀和后缀2.3 获取文件的文件夹及上一级、上上级文件夹2.4 获取该文件

1. pathlib库介绍

相比常用的 os.path 而言,pathlib 对于目录路径的操作更简洁也更贴近 pythonic(Python代码风格的)。但是它不单纯是为了简化操作,还有更大的用途

pathlib 是Python内置库,Python 文档给它的定义是:

The pathlib module – object-oriented filesystem paths(面向对象的文件系统路径)

pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统

2. pathlib库下Path类的基本使用

2.1 获取文件名

from pathlib import Path  # 导入pathlib的Path类
import os
path = "/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb"
p = Path(path)
print(f"获取文件名:{p.name}")  # 获取文件名:pathlib库的使用.ipynb

2.2 获取文件前缀和后缀

—— .stem & .suffix

from pathlib import Path
import os
path = "/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb"
p = Path(path)
print(f"获取前缀:{p.stem}")  # 获取前缀:pathlib库的使用
print(f"获取后缀:{p.suffix}")  # 获取后缀:.ipynb

2.3 获取文件的文件夹及上一级、上上级文件夹

—— .parent

from pathlib import Path
import os
path = "/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb"
p = Path(path)
print(f"获取当前文件所属文件夹:{p.parent}")
print(f"获取上一级文件夹:{p.parent.parent}")
print(f"获取上上一级文件夹:{p.parent.parent.parent}")
"""
获取当前文件所属文件夹:/home/leovin/JupyterNotebookFolders
获取上一级文件夹:/home/leovin
获取上上一级文件夹:/home
"""

Note: 最上级的文件夹是一个/

2.4 获取该文件所属的文件夹及其父文件夹

—— .parents

from pathlib import Path
import os
path = "/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb"
p = Path(path)
print(f"获取当前文件所属文件夹及其父文件夹:{p.parents}\n")
# 遍历
for idx, folder_path in enumerate(p.parents):
    print(f"No.{idx}: {folder_path}")
"""
获取当前文件所属文件夹及其父文件夹:<PosixPath.parents>

No.0: /home/leovin/JupyterNotebookFolders
No.1: /home/leovin
No.2: /home
No.3: /
"""

2.5 文件绝对路径

按照/进行分割 —— .parts

from pathlib import Path
import os
path = "/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb"
p = Path(path)
print(f"将文件的绝对路径按照`/`进行分割,返回一个tuple:{p.parts}\n")
# 遍历
for idx, element in enumerate(p.parts):
    print(f"No.{idx}: {element}")
"""
获取当前文件所属文件夹及其父文件夹:<PosixPath.parents>
No.0: /
No.1: home
No.2: leovin
No.3: JupyterNotebookFolders
No.4: pathlib库的使用.ipynb
"""

2.6 获取当前工作目录

—— Path.cwd()

from pathlib import Path
import os
path_1 = Path.cwd()
path_2 = os.getcwd()
print(f"Path.cwd(): {path_1}")
print(f"os.getcwd(): {path_2}")
"""
Path.cwd(): /home/leovin/JupyterNotebookFolders
os.getcwd(): /home/leovin/JupyterNotebookFolders
"""

2.7 获取用户

home目录路径 —— Path.home()系列

from pathlib import Path
print(f"获取用户home路径: {Path.home()}")
"""
获取用户home路径: /home/leovin
"""

2.8 获取文件详细信息

—— object.stat()

from pathlib import Path
p = Path("/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb")
print(f"获取文件详细信息: {p.stat()}\n")
print(f"获取文件字节大小: {p.stat().st_size}\n")
print(f"获取文件创建时间: {p.stat().st_ctime}\n")  # c: create
print(f"获取文件上次修改时间: {p.stat().st_mtime}\n")  # m:: modify
"""
获取文件详细信息: os.stat_result(st_mode=33204, st_ino=23860358, st_dev=2052, st_nlink=1, st_uid=1000, st_gid=1000, st_size=12125, st_atime=1653039478, st_mtime=1653039478, st_ctime=1653039478)

获取文件字节大小: 12125

获取文件创建时间: 1653039478.703161

获取文件上次修改时间: 1653039478.703161
"""

可以看到,object.stat().xxx就是在调用attr 

2.9 检查目录或者文件是否存在

—— Path("路径").exists()

from pathlib import Path
print(f"目标路径的文件是否存在: {Path('/home/leovin/JupyterNotebookFolders/xxx').exists()}")  # False
print(f"目标路径的文件是否存在: {Path('/home/leovin/JupyterNotebookFolders').exists()}")  # True

2.10 检查指定指定路径是否为folder或者file

—— Path("路径").is_file() & Path("路径").is_dir()

from pathlib import Path
print(f"目标路径是否为文件: {Path('/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb').is_file()}")  # True
print(f"目标路径是否为文件夹: {Path('/home/leovin/JupyterNotebookFolders/').is_dir()}")  # True

directory为文件夹

2.11 将相对路径转换为绝对路径

—— Path("路径").resolve()

from pathlib import Path
print(f"目标路径是否为文件: {Path('/home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb').is_file()}")  # True
print(f"目标路径是否为文件夹: {Path('/home/leovin/JupyterNotebookFolders/').is_dir()}")  # True

2.12 遍历一个目录

—— Path("路径").iterdir()

from pathlib import Path
path_object = Path("/home/leovin/JupyterNotebookFolders/").iterdir()
print(f"path_object: {path_object}")  # path_object: <generator object Path.iterdir at 0x7f0ca0061c10>
# 迭代目录对象
for idx, element in enumerate(path_object):
    print(f"No.{idx}: {element}")
"""
path_object: <generator object Path.iterdir at 0x7f0ca0061c10>
No.0: /home/leovin/JupyterNotebookFolders/temp
No.1: /home/leovin/JupyterNotebookFolders/torch.meshgrid().ipynb
No.2: /home/leovin/JupyterNotebookFolders/array.argsort().ipynb
No.3: /home/leovin/JupyterNotebookFolders/切片....ipynb
No.4: /home/leovin/JupyterNotebookFolders/logging信息.log
No.5: /home/leovin/JupyterNotebookFolders/Python中类的私有变量、私有方法、静态方法.ipynb
No.6: /home/leovin/JupyterNotebookFolders/temp_file.ipynb
No.7: /home/leovin/JupyterNotebookFolders/example.log
No.8: /home/leovin/JupyterNotebookFolders/Python语法.ipynb
No.9: /home/leovin/JupyterNotebookFolders/.ipynb_checkpoints
No.10: /home/leovin/JupyterNotebookFolders/craw.data.txt
No.11: /home/leovin/JupyterNotebookFolders/test.txt
No.12: /home/leovin/JupyterNotebookFolders/logging的学习.ipynb
No.13: /home/leovin/JupyterNotebookFolders/Test.ipynb
No.14: /home/leovin/JupyterNotebookFolders/算法题
No.15: /home/leovin/JupyterNotebookFolders/functions.ipynb
No.16: /home/leovin/JupyterNotebookFolders/mask转0&1.ipynb
No.17: /home/leovin/JupyterNotebookFolders/Multi_Task_in_Python.ipynb
No.18: /home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb
No.19: /home/leovin/JupyterNotebookFolders/三种激活函数绘制.ipynb
"""

2.13 获取所有符合pattern的文件

—— Path("路径").glob("folder1/xxx.格式")

from pathlib import Path
pattern = "JupyterNotebookFolders/*.ipynb"
glob_generator = Path("/home/leovin/").glob(pattern)
# 遍历返回的对象 -> 返回的是绝对路径
for idx, element in enumerate(glob_generator):
    print(f"No.{idx}: {element}")
"""
No.0: /home/leovin/JupyterNotebookFolders/torch.meshgrid().ipynb
No.1: /home/leovin/JupyterNotebookFolders/array.argsort().ipynb
No.2: /home/leovin/JupyterNotebookFolders/切片....ipynb
No.3: /home/leovin/JupyterNotebookFolders/Python中类的私有变量、私有方法、静态方法.ipynb
No.4: /home/leovin/JupyterNotebookFolders/temp_file.ipynb
No.5: /home/leovin/JupyterNotebookFolders/Python语法.ipynb
No.6: /home/leovin/JupyterNotebookFolders/logging的学习.ipynb
No.7: /home/leovin/JupyterNotebookFolders/Test.ipynb
No.8: /home/leovin/JupyterNotebookFolders/functions.ipynb
No.9: /home/leovin/JupyterNotebookFolders/mask转0&1.ipynb
No.10: /home/leovin/JupyterNotebookFolders/Multi_Task_in_Python.ipynb
No.11: /home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynb
No.12: /home/leovin/JupyterNotebookFolders/三种激活函数绘制.ipynb
"""

2.14 删除文件(非目录)

—— Path("路径").unlink()

from pathlib import Path
# 当前文件夹下的txt文件
for idx, element in enumerate(Path("./").glob("*.txt")):
    print(f"No.{idx}: {element}")
print("-" * 30)
"""
    删除指定的文件(非目录)
        1. 是真的删除而非unlink
        2. 如果文件不存在则保存
"""
try:
    Path("./will_be_deleted.txt").unlink()
except Exception as e:
    print(f"删除文件发生错误,原因为: {e}")
# 当前文件夹下的txt文件
for idx, element in enumerate(Path("./").glob("*.txt")):
    print(f"No.{idx}: {element}")
"""
No.0: will_be_deleted.txt
No.1: craw.data.txt
No.2: test.txt
------------------------------
No.0: craw.data.txt
No.1: test.txt

报错的输出:
No.0: craw.data.txt
No.1: test.txt
------------------------------
删除文件发生错误,原因为: [Errno 2] No such file or directory: 'will_be_deleted.txt'
No.0: craw.data.txt
No.1: test.txt
"""

3. pathlib库与os库的对比

ospathlib描述英文说明
os.path.abspath(("文件路径"))Path("文件路径").resolve()将路径转换为绝对路径-
os.chmod()Path("文件路径").chmod(xxx)更改文件权限change mode
os.mkdir(("文件路径"))Path("文件路径").mkdir()新建文件夹make directory
os.rename("文件路径", "xxx")Path("文件路径").rename("xxx")重命名文件/文件夹名称-
os.replace(a, b)Path("文件路径").replace(a, b)替换字符串-
os.rmdir()Path("文件路径").rmdir()删除文件夹(里面必须是空的)remove directory
os.remove("文件路径") / os.unlink("文件路径")Path("文件路径").unlink()删除文件(非目录)-
os.getcwd()Path("文件路径").cwd()获取当前文件工作目录current work directory
os.path.isdir()Path("文件路径").is_dir()判断当前路径是否为目录-
os.path.isfile()Path("文件路径").is_file()判断当前路径是否为文件-
os.stat()Path("文件路径").stat()返回当前路径的信息status
os.path.isabs()Path("文件路径").is_absolute()判断当前路径是否为绝对路径-
os.path.basename()Path("文件路径").name返回文件/目录的基础名称(不带路径)-
os.path.dirname()Path("文件路径").parent返回路径所属文件夹名称-
os.path.samefile()Path("文件路径").samefile(xxx)判断两个文件是否相同-
os.path.splitext("文件路径")(Path("文件路径").stem, Path("文件路径").suffix)将文件名分离,分成前缀和后缀stem + suffix

参考

https://www.jb51.net/article/193402.htm

Https://docs.python.org/zh-cn/3/library/pathlib.html?highlight=pathlib#module-pathlib

到此这篇关于Python中的pathlib库的文章就介绍到这了,更多相关Python pathlib库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python中的pathlib库使用详解

本文链接: https://lsjlt.com/news/118227.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中的pathlib库使用详解
    目录1. pathlib库介绍2. pathlib库下Path类的基本使用2.1 获取文件名2.2 获取文件前缀和后缀2.3 获取文件的文件夹及上一级、上上级文件夹2.4 获取该文件...
    99+
    2024-04-02
  • Python中的pathlib库如何使用
    这篇文章主要介绍“Python中的pathlib库如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的pathlib库如何使用”文章能帮助大家解决问题。1. pathlib库介绍相...
    99+
    2023-06-30
  • 怎么使用Python标准库pathlib
    本篇内容主要讲解“怎么使用Python标准库pathlib”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python标准库pathlib”吧!学习 Python 时,尤其是在进行文件操作...
    99+
    2023-06-25
  • pathlib模块怎么在python中使用
    这篇文章给大家介绍pathlib模块怎么在python中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.t...
    99+
    2023-06-14
  • 怎么使用Python3中的pathlib
    这篇文章主要讲解了“怎么使用Python3中的pathlib”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python3中的pathlib”吧!使用pathlib处理更好的路径pat...
    99+
    2023-06-02
  • 详解Python中datetime库的使用
    目录1. datetime 库概述2. 拓展: 1970年1月1日3. datetime 库解析1. datetime 库概述 以不同格式显示日期和时间是程序中最常用到的功能。Pyt...
    99+
    2023-05-18
    Python datetime datetime
  • Python文件系统模块pathlib库怎么使用
    一、pathlib库官方定义pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适...
    99+
    2023-05-14
    Python pathlib
  • Python文件系统模块pathlib库如何使用
    本文小编为大家详细介绍“Python文件系统模块pathlib库如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python文件系统模块pathlib库如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-06
  • python中time库使用详解
    目录time库的使用:时间获取:(1)time函数(2)localtime()函数和gmtime()函数(3)ctime()函数(与asctime()函数为一对互补函数) ...
    99+
    2024-04-02
  • python中validators库的使用方法详解
    目录前言validators.between(value, min=None, max=None)validators.domain(value)validators.email(v...
    99+
    2024-04-02
  • python urllib库的使用详解
    目录1、请求模块:urllib.request data参数:post请求urlopen()中的参数timeout:设置请求超时时间:响应类型:响应的状态码、响应头:使用代理:url...
    99+
    2024-04-02
  • Python jiaba库的使用详解
    目录jiaba库的使用1、jieba库的安装2、统计荷塘月色词频总结jiaba库的使用 jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模...
    99+
    2024-04-02
  • Python中第三方库Faker的使用详解
    目录背景介绍实战:模拟1w条数据写入ExcelPython库讲解1. 生成姓名2. 生成详细地址3. 生成所在省份4. 生成手机号5. 生成身份证号6. 生成出生年月7. 生成邮箱补...
    99+
    2024-04-02
  • python中第三方库pyecharts的使用详解
    与pyecharts有关的两个网站:官方网站:pyecharts - A Python Echarts Plotting Library built with love. ,画廊功能...
    99+
    2024-04-02
  • Python 中random 库的详细使用
    Random库主要包含返回随机数的函数,主要用于普通的随机数生成的程序,如果对随机性有特殊要求,比如加密等,可以用函数os.urandom()或者random模块内部的SystemRandom类,这些可以让数据接近真...
    99+
    2022-06-02
    Python random Python random用法
  • python中requests库安装与使用详解
    目录前言1、Requests介绍2、requests库的安装3、requests库常用的方法4、response对象的常用属性5、使用requests发送get请求5.1  ...
    99+
    2024-04-02
  • Python文件路径处理模块pathlib示例详解
    目录1. 为什么需要pathlib2. pathlib的使用2.1 创建路径2.2 读写文件2.3 路径的属性2.4 移动和删除文件3. 操作系统的差异附:pat...
    99+
    2023-05-14
    python 路径处理 文件路径 python python pathlib模块
  • python中h5py开源库的使用样例详解
    目录一、h5py模块介绍二、h5py模块使用1、h5py接口简单介绍2、h5py的使用样例一、h5py模块介绍 本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介...
    99+
    2024-04-02
  • python HZK16字库使用详解
    目录简介实现的原理:HZK16简介案例:环境: windows7, python2.7 简介 偶然在网上看到热心网友使用python讲微信头像进行了组字,感觉很有意思,就做下研究。 ...
    99+
    2023-02-22
    python HZK16字库 python HZK16字库使用
  • Python中selenium库的用法详解
    selenium主要是用来做自动化测试,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。 模拟浏览器进行网页加载,当requests,urllib无法正常获取网页内容的时候 一、声明浏览器对象 注意点...
    99+
    2022-06-02
    Python中selenium库的用法 selenium用法 Python webdriver selenium获取网页代码 selenium执行JavaScript selenium等待 Cooki
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作