• Python 标准库之pathlib,路径操作


    背景

    pathlib 标准库是在 Python3.4 引入,到现在最近版 3.11 已更新了好几个版本,主要是用于路径操作,相比之前的路径操作方法 os.path 有一些优势,有兴趣的同学可以学习下

    **官方文档:**https://docs.python.org/zh-cn/3/library/pathlib.html
    官方pathlib图片

    小编环境

    import sys
    
    print('python 版本:',sys.version.split('|')[0])   #python 版本: 3.11.4
    
    • 1
    • 2
    • 3

    主要方法、函数

    该模块中主要使用的是 Path

    • 导入模块
    from pathlib import Path
    
    • 1
    • 获取当前工作目录
    Path.cwd()   #WindowsPath('D:/桌面/Python/标准库')
    
    • 1
    • 获取用户 home 目录
    Path.home()   #WindowsPath('C:/Users/admin')
    
    • 1
    • 获取绝对路径
    file = Path('pathlib_demo1.py')
    print(file)   #WindowsPath('pathlib_demo1.py')
    file.resolve()  #WindowsPath('D:/桌面/Python/标准库/pathlib_demo1.py')
    
    • 1
    • 2
    • 3
    • 获取文件属性
    file = Path('pathlib_demo1.py')
    print(file)   #WindowsPath('pathlib_demo1.py')
    
    file.stat()  
    '''
    os.stat_result(st_mode=33206, st_ino=1970324837176895, st_dev=2522074357, 
    st_nlink=1, st_uid=0, st_gid=0, st_size=273, 
    st_atime=1695642854, st_mtime=1695611301, st_ctime=1695611241)
    '''
    
    #文件大小
    file.stat().st_size   #273B
    
    #最近访问时间 access ,It represents the time of most recent access 
    file.stat().st_atime  #1695625134.9083948
    
    #创建时间 create,It represents the time of most recent metadata change on Unix and creation time on Windows.
    file.stat().st_ctime  #1695611241.5981772
    
    #修改时间  modify,It represents the time of most recent content modification
    file.stat().st_mtime  #1695611301.1193473
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 查看当前工作目录文件及文件夹
    for f in path.iterdir():
        print(f)
        print('is_file:',f.is_file())  #判断是否为文件
        print('is_dir:',f.is_dir())   #判断是否为文件夹
        print('='*30)
    
    '''
    D:\桌面\Python\标准库\.ipynb_checkpoints
    is_file: False
    is_dir: True
    ==============================
    D:\桌面\Python\标准库\pathlib.ipynb
    is_file: True
    is_dir: False
    ==============================
    D:\桌面\Python\标准库\pathlib_demo1.py
    is_file: True
    is_dir: False
    ==============================
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 路径的各个组成部分
    file=Path('D:\桌面\Python\标准库\pathlib_demo1.py')
    
    file.name  #'pathlib_demo1.py'
    file.stem  #'pathlib_demo1'
    file.suffix   #'.py'
    file.parent   #WindowsPath('D:/桌面/Python/标准库')
    file.anchor  #'D:\\'
    file.parent.parent  #WindowsPath('D:/桌面/Python')
    
    #获取所有的父级路径,层层递进
    list(file.parents)
    '''
    [WindowsPath('D:/桌面/Python/标准库'),
     WindowsPath('D:/桌面/Python'),
     WindowsPath('D:/桌面'),
     WindowsPath('D:/')]
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 路径拼接
      支持2种方式
    #第1种方式:使用 /
    Path.home() / 'dir' / 'file.txt'  #WindowsPath('C:/Users/admin/dir/file.txt')
    
    #第2种方式:使用方法
    Path.home().joinpath('dir', 'file.txt')  #WindowsPath('C:/Users/admin/dir/file.txt')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 判断路径、文件是否存在
    #当前文件件里面是否存在 子目录 archive/demo.txt 文件
    Path("archive/demo.txt").exists()  #False
    
    #当前文件件里面是否存在 二级子目录 dir/subdir  
    Path('dir/subdir').exists()   #True
    
    #当前文件件里面是否存在 pathlib_demo1.py 文件
    Path("pathlib_demo1.py").exists()  #True
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    以上是自己实践中遇到的一些问题,分享出来供大家参考学习,欢迎关注微信公众号:DataShare ,不定期分享干货

  • 相关阅读:
    Python安装和环境配置教程
    剑指offer刷题笔记整理
    Spring源码:Bean生命周期(五)
    视频汇聚EasyCVR视频监控云平台对接GA/T 1400视图库对象和对象集合XMLSchema描述
    2.1 八大类50条小红书爆款标题文案【玩赚小红书】
    Request failed with status code 422
    [NOI2019]序列
    与HTTP相关的各种概念
    关于C语言的一些尘封记忆的唤醒
    .Net Maui 开发之路(1): APP基本设置(图标、应用名称)
  • 原文地址:https://blog.csdn.net/zhangtingduo/article/details/133344699