博客
关于我
抛弃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/

你可能感兴趣的文章
python day21
查看>>
python decode和encode
查看>>
Python del 语句
查看>>
Python Dict 理解创建和更新字典
查看>>
Python Discord Bot - python clear_reaction() 清除所有反应而不是特定反应
查看>>
python django mysql写入中文乱码_django自动创建的mysql表里面中文乱码问题
查看>>
python docx的超链接网址和链接文本
查看>>
python elasticsearch 导出数据到json文件导入到另一个es中
查看>>
python ETL工具 pyetl
查看>>
Python eval 函数说明
查看>>
python eval简介
查看>>
python excel 饼图 简书_Python实现绘画多个饼图
查看>>
python excel接口自动化测试框架!
查看>>
Python exec 函数解析:探索动态代码执行的无限可能!
查看>>
Python EXEC和__NAME__
查看>>
python file
查看>>
Python FileDialog获取文件夹路径不是文件
查看>>
python filter过滤器的使用_python基础知识分享:zip()、filter函数和reduce如何使用?...
查看>>
python flask 请求code 400, message Bad request version
查看>>
Python Flink Stateful函数入口上的Kafka键访问
查看>>