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

Python中的pathlib库如何使用

2023-06-30 15:06:54 140人浏览 泡泡鱼

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

摘要

这篇文章主要介绍“python中的pathlib库如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的pathlib库如何使用”文章能帮助大家解决问题。1. pathlib库介绍相

这篇文章主要介绍“python中的pathlib库如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的pathlib库如何使用”文章能帮助大家解决问题。

    1. pathlib库介绍

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

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

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

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

    Python中的pathlib库如何使用

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

    2.1 获取文件名

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

    2.2 获取文件前缀和后缀

    —— .stem & .suffix

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

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

    —— .parent

    from pathlib import Pathimport ospath = "/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 Pathimport ospath = "/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/JupyterNotebookFoldersNo.1: /home/leovinNo.2: /homeNo.3: /"""

    2.5 文件绝对路径

    按照/进行分割 &mdash;&mdash; .parts

    from pathlib import Pathimport ospath = "/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: homeNo.2: leovinNo.3: JupyterNotebookFoldersNo.4: pathlib库的使用.ipynb"""

    2.6 获取当前工作目录

    &mdash;&mdash; Path.cwd()

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

    2.7 获取用户

    home目录路径 &mdash;&mdash; Path.home()系列

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

    2.8 获取文件详细信息

    &mdash;&mdash; object.stat()

    from pathlib import Pathp = 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: createprint(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 检查目录或者文件是否存在

    &mdash;&mdash; Path("路径").exists()

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

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

    &mdash;&mdash; Path("路径").is_file() & Path("路径").is_dir()

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

    directory为文件夹

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

    &mdash;&mdash; Path("路径").resolve()

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

    2.12 遍历一个目录

    &mdash;&mdash; Path("路径").iterdir()

    from pathlib import Pathpath_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/tempNo.1: /home/leovin/JupyterNotebookFolders/torch.meshgrid().ipynbNo.2: /home/leovin/JupyterNotebookFolders/array.argsort().ipynbNo.3: /home/leovin/JupyterNotebookFolders/切片....ipynbNo.4: /home/leovin/JupyterNotebookFolders/logging信息.logNo.5: /home/leovin/JupyterNotebookFolders/Python中类的私有变量、私有方法、静态方法.ipynbNo.6: /home/leovin/JupyterNotebookFolders/temp_file.ipynbNo.7: /home/leovin/JupyterNotebookFolders/example.logNo.8: /home/leovin/JupyterNotebookFolders/Python语法.ipynbNo.9: /home/leovin/JupyterNotebookFolders/.ipynb_checkpointsNo.10: /home/leovin/JupyterNotebookFolders/craw.data.txtNo.11: /home/leovin/JupyterNotebookFolders/test.txtNo.12: /home/leovin/JupyterNotebookFolders/logging的学习.ipynbNo.13: /home/leovin/JupyterNotebookFolders/Test.ipynbNo.14: /home/leovin/JupyterNotebookFolders/算法题No.15: /home/leovin/JupyterNotebookFolders/functions.ipynbNo.16: /home/leovin/JupyterNotebookFolders/mask转0&1.ipynbNo.17: /home/leovin/JupyterNotebookFolders/Multi_Task_in_Python.ipynbNo.18: /home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynbNo.19: /home/leovin/JupyterNotebookFolders/三种激活函数绘制.ipynb"""

    2.13 获取所有符合pattern的文件

    &mdash;&mdash; Path("路径").glob("folder1/xxx.格式")

    from pathlib import Pathpattern = "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().ipynbNo.1: /home/leovin/JupyterNotebookFolders/array.argsort().ipynbNo.2: /home/leovin/JupyterNotebookFolders/切片....ipynbNo.3: /home/leovin/JupyterNotebookFolders/Python中类的私有变量、私有方法、静态方法.ipynbNo.4: /home/leovin/JupyterNotebookFolders/temp_file.ipynbNo.5: /home/leovin/JupyterNotebookFolders/Python语法.ipynbNo.6: /home/leovin/JupyterNotebookFolders/logging的学习.ipynbNo.7: /home/leovin/JupyterNotebookFolders/Test.ipynbNo.8: /home/leovin/JupyterNotebookFolders/functions.ipynbNo.9: /home/leovin/JupyterNotebookFolders/mask转0&1.ipynbNo.10: /home/leovin/JupyterNotebookFolders/Multi_Task_in_Python.ipynbNo.11: /home/leovin/JupyterNotebookFolders/pathlib库的使用.ipynbNo.12: /home/leovin/JupyterNotebookFolders/三种激活函数绘制.ipynb"""

    2.14 删除文件(非目录)

    &mdash;&mdash; 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.txtNo.1: craw.data.txtNo.2: test.txt------------------------------No.0: craw.data.txtNo.1: test.txt报错的输出:No.0: craw.data.txtNo.1: test.txt------------------------------删除文件发生错误,原因为: [Errno 2] No such file or directory: 'will_be_deleted.txt'No.0: craw.data.txtNo.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

    关于“Python中的pathlib库如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: Python中的pathlib库如何使用

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

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

    猜你喜欢
    • Python中的pathlib库如何使用
      这篇文章主要介绍“Python中的pathlib库如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的pathlib库如何使用”文章能帮助大家解决问题。1. pathlib库介绍相...
      99+
      2023-06-30
    • 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库如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
      99+
      2023-07-06
    • 怎么使用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文件系统模块pathlib库怎么使用
      一、pathlib库官方定义pathlib 是Python内置库,Python 文档给它的定义是 Object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适...
      99+
      2023-05-14
      Python pathlib
    • Python中如何使用Itertools库
      这篇文章将为大家详细讲解有关Python中如何使用Itertools库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、概念简介1. 什么是迭代器迭代器是由__next__方法组成的对象。它...
      99+
      2023-06-16
    • Python中如何使用ChatOps库
      Python中如何使用ChatOps库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ChatOps 是基于会话导向而进行的开发。其思路是你可以编写能够对聊天窗口中的某些输入...
      99+
      2023-06-16
    • Python中如何使用NumPy库?
      NumPy是Python中最流行的科学计算库之一。它提供了一种高效的处理大型数组和矩阵的方法,同时也包含了许多用于数学、科学和工程计算的常用函数。本文将介绍NumPy库的基础知识以及如何使用它来进行数组和矩阵操作。 安装NumPy 在...
      99+
      2023-09-26
      api numpy spring
    • python中如何使用numpy库
      这篇文章主要介绍“python中如何使用numpy库”,在日常操作中,相信很多人在python中如何使用numpy库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中如何使用numpy库”的疑惑有所...
      99+
      2023-06-27
    • python中如何使用Matplotlib库
      这篇文章将为大家详细讲解有关python中如何使用Matplotlib库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台交互...
      99+
      2023-06-02
    • Python中jieba库如何使用
      这篇文章主要介绍“Python中jieba库如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中jieba库如何使用”文章能帮助大家解决问题。一、jieba库基本介绍(1)jieba...
      99+
      2023-07-05
    • urllib库如何在python中使用
      今天就跟大家聊聊有关urllib库如何在python中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、请求模块:urllib.requestpython2import urll...
      99+
      2023-06-14
    • 如何在python中使用gensim库
      这篇文章给大家介绍如何在python中使用gensim库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均为Pytho...
      99+
      2023-06-14
    • 如何在python中使用matlab库
      这期内容当中小编将会给大家带来有关如何在python中使用matlab库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,P...
      99+
      2023-06-14
    • 如何在python中使用gin库
      这篇文章将为大家详细讲解有关如何在python中使用gin库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
      99+
      2023-06-14
    • Polars库如何在python中使用
      这期内容当中小编将会给大家带来有关Polars库如何在python中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
      99+
      2023-06-14
    • 如何在python中使用jieba库
      这篇文章将为大家详细讲解有关如何在python中使用jieba库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
      99+
      2023-06-07
    • 如何在Python中使用curses库
      本篇文章为大家展示了如何在Python中使用curses库,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、Python内置了curses库,但是对于Windows 操作系统需要安装一个补丁以进行适...
      99+
      2023-06-15
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作