博客
关于我
抛弃os.path,拥抱pathlib
阅读量:418 次
发布时间:2019-03-06

本文共 2017 字,大约阅读时间需要 6 分钟。

基于Python的文件、目录和路径操作

在Python中,处理文件、目录和路径操作时,os.path模块是常用的工具。然而,pathlib模块作为os.path的替代品,提供了更便捷的API,适合编程习惯的需求。pathlib模块通过对路径进行对象化,使得操作更加直观和高效。

模块结构概述

pathlib模块的核心在于6个类,这些类的基类是PurePath,其他5个类都是从它继承而来:

  • PurePath:将路径看作字符串,支持路径操作,不关心文件系统的真实状态。
  • PurePosixPathPureWindowsPath:分别用于处理UNIX和Windows路径。
  • Path:结合PurePath的操作,增加了与文件系统交互的功能。
  • PosixPathWindowsPath:Path的子类,分别处理UNIX和Windows路径。

PurePath类

PurePath类适用于不需要与真实文件系统交互的场景:

构造方法

  • 多个参数拼接:支持拼接多个路径字符串,适配当前操作系统。
    PurePath('https:', 'www.example.com', 'path') # 返回适配当前系统的路径
  • 默认参数:未传入参数时,默认传入.(当前路径)。
    PurePath() == PurePath('.') # True
  • 处理多个根路径:多个根路径中,只有最后一个生效。
    PurePath('C:/', 'D:/', 'file.txt') # 返回D:\file.txt

特性和方法

  • 路径分解parts属性返回路径分解后的元组,drive返回驱动器,root返回根路径。
  • 文件信息anchor返回盘符和根路径,parents返回所有父目录。
  • 文件操作parent返回上一级目录,name返回文件名,suffix返回文件后缀。
  • 转换方法as_posix()转换为UNIX路径,as_uri()转换为URL。
  • 路径操作joinpath()拼接路径,match()判断匹配,relative_to()去除基准路径。
  • 文件管理with_name()替换文件名,with_suffix()替换后缀。

Path类

在大多数情况下,Path类是首选。Path继承自PurePath,增加了与文件系统交互的功能:

基本使用

  • 创建实例
    Path('a/b/c/d') # WindowsPath('a/b/c/d')Path('/etc') # WindowsPath('/etc')Path() # WindowsPath('.')
  • 当前工作目录
    Path.cwd() # 返回当前工作目录Path.home() # 返回用户主目录

目录操作

  • 创建目录
    Path('d:/test/11').mkdir(exist_ok=True)Path('d:/test/11/22').mkdir(parents=True, exist_ok=True)
  • 删除目录rmdir()删除空目录。
  • 遍历目录
    Path('d:/test').iterdir() # 类似os.listdirPath('d:/test').rglob('*') # 类似os.walk

文件操作

  • 创建文件
    Path('d:/test/11/22/test.py').touch()
  • 文件读写
    with Path('C:/Users/Administrator/Desktop/text.txt').open('r', encoding='utf-8') as f:    print(f.readline())
  • 文件信息stat()获取文件详细信息。
  • 文件读写:支持open()read_bytes()write_bytes()等方法。

判断操作

  • 文件类型is_dir()is_file()is_symlink()等。
  • 路径属性is_absolute()判断是否为绝对路径。

路径拼接和分解

  • 拼接:通过/操作符拼接路径。
    Path('a') / Path('b') # Path('a/b')'b' / Path('a') / 'c' # Path('b/a/c')
  • 分解parts属性返回路径分解结果。

通配符

  • 匹配文件glob()rglob()方法支持通配符。
    Path('d:/vue_learn').glob('*.html') # 匹配所有HTML文件

正则匹配

  • 模式匹配match()方法支持正则表达式。
    Path('C:/Users/Administrator/Desktop/text.txt').match('*.txt') # True

本文全面介绍了Python pathlib模块的使用方法,涵盖了PurePath类和Path类的核心功能和操作示例。通过这些方法,开发者可以更高效地处理文件、目录和路径操作。

转载地址:http://oxyuz.baihongyu.com/

你可能感兴趣的文章
POI:POI+JXL实现xls文件添加水印
查看>>
POI:POI实现docx文件添加水印
查看>>
POJ 1006
查看>>
Quartz中时间表达式的设置-----corn表达式
查看>>
poj 1035
查看>>
POJ 1061 青蛙的约会 (扩展欧几里得)
查看>>
Quartz2.2.1简单使用
查看>>
POJ 1080 Human Gene Functions(DP:LCS)
查看>>
Quant 开源项目教程
查看>>
POJ 1088 滑雪
查看>>
POJ 1095 Trees Made to Order
查看>>
POJ 1113 Wall(计算几何--凸包的周长)
查看>>
poj 1125Stockbroker Grapevine(最短路)
查看>>
Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
查看>>
poj 1151 (未完成) 扫描线 线段树 离散化
查看>>
POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
查看>>
poj 1163 数塔
查看>>
POJ 1177 Picture(线段树:扫描线求轮廓周长)
查看>>
Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
查看>>
POJ 1182 食物链(并查集拆点)
查看>>