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

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

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

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

模块结构概述

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

  • PurePath:将路径看作字符串,支持路径操作,不关心文件系统的真实状态。
  • PurePosixPath和PureWindowsPath:分别用于处理UNIX和Windows路径。
  • Path:结合PurePath的操作,增加了与文件系统交互的功能。
  • PosixPath和WindowsPath: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下载_安装_配置_以及第一行python程序---python工作笔记009
查看>>
Python不协调机器人消息.内容
查看>>
Python与C#之间内存共享互传信息
查看>>
python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
查看>>
python与excel
查看>>
Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
查看>>
python与flask_Python编程中flask的简介与简单使用
查看>>
python与图灵机器人交互(WXPY版本)
查看>>
python与运算符_python运算符
查看>>
python两个列表获取交集,并集,差集
查看>>
python两个字典合并,两个list合并
查看>>
Python两个版本共存时,命令行升级pip
查看>>
Python两个版本共存时,怎么验证是否安装成功 scrapy
查看>>
Python两个版本共存时,通过pip安装Scrapy
查看>>
python两组变量的相关关系散点图_变量是什么?变量间的两种关系——函数关系和相关关系(小学版)...
查看>>
Python中 pass语句的作用
查看>>
python中 urllib, urllib2, httplib, httplib2 几个库的区别
查看>>
python中 yaml库 & json库 & xmltodict库使用
查看>>
python中 将你的名字转化成为二进制并输出
查看>>
Python中*args 和**kwargs的用法
查看>>