pathlib的常用方法

patnlib-面向对象的文件系统路径

pathlib模块提供了一个面向对象API来解析、建立、测试和处理文件名和路径,而不是像os.path那向使用底层字符串,进行操作。
但是此方法与os.path有许多共通之处,请看os.path.join了解详情。

一、建立路径

Path()函数

要实例化一个新路径,可以提供一个字符串作为第一个参数。要创建一个新路径来指示相对于已有路径的值,可以使用 '/'操作符扩展路径。这个操作符的参数可以是字符串,也可以是路径对象。

from pathlib import Path

p = Path('C:\\Users\\Administrator\\Desktop')
print(p)
p = p / 'aa.txt'
print(p)

输出结果:

C:\Users\Administrator\Desktop
C:\Users\Administrator\Desktop/aa.txt

拼接符 ‘/’ 有以下三种操作:

  • Path对象 / Path对象
  • Path对象 / 字符串
  • 字符串 / Path对象

此操作与os.path.join相似!对os.path.join有疑问,可参考os.path.join

二、解析路径

路径对象提供了一些方法和属性可以从路径名中抽取出部分值。例如,parts属性可以生成根据路径分隔符值解析得到的一个路径段序列。

1、分解parts

>>>from pathlib import Path
>>>p = Path('C:\\Users\\Administrator\\Desktop')
>>>print(p.parts)
('C:\\', 'Users', 'Administrator', 'Desktop')

parts属性,可以返回路径中的每一部分.

2、父目录parent

有两种办法可以从一个给定的路径对象在文件系统层次结构上“向上”导航。这里直接看代码更直观。

>>>from pathlib import Path
>>>p = Path('C:\\Users\\Administrator\\Desktop')
>>>print(p.parent)
C:\Users\Administrator

>>>print(p.parent.parent)
C:\Users

parents是一个迭代器,每调用一次,目录向上一次。

>>>for x in p.parents: 
       print(x)
C:\Users\Administrator
C:\Users
C:\

这个例子迭代处理parents属性,并打印成员值。

3、name属性、suffix属性、stem属性

>>>from pathlib import Path
>>>p = Path('C:\\Users\\Administrator\\Desktop')
>>>print('{!s:<15} : {!s:>15}'.format('path', p))
>>>print('{!s:<15} : {!s:>15}'.format('name', p.name))
>>>print('{!s:<15} : {!s:>15}'.format('suffix', p.suffix))
>>>print('{!s:<15} : {!s:>15}'.format('stem', p.stem))

path            : C:\Users\Administrator\Desktop\aa.txt
name            :          aa.txt
suffix          :            .txt
stem            :              aa

name属性:包含路径的最后一部分,即最后一个路径分隔符后面的内容(与os.path.basename()生成的值相同)
suffix属性:目录中最后一个部分的扩展名
stem属性:目录最后一个部分,没有后缀

另外还有这两个属性:
with_name(name) :替换目录最后一个部分并返回一个新的路径
with_suffix(suffix) :替换扩展名,返回新的路径,扩展名存在则不变

4、home()、cwd()

>>>from pathlib import Path

>>>Path.home()
WindowsPath('C:/Users/Administrator')
>>>Path.cwd()
WindowsPath('C:/Users/Administrator')

判断路径的类型

返回类型为布尔值:

is_dir() 是否是目录
is_file() 是否是普通文件

>>>from pathlib import Path

>>>p = Path('C:/Users/Administrator')
>>>p.is_dir()
True
>>>p1 = p / 'text.txt'
>>>p1.is_file()
False

resolve() 返回一个新的路径,这个新路径就是当前Path对象的绝对路径

exists()属性:该路径是否指向现有的目录或文件

>>>Path('C:/Users/Administrator').exists()
True

创建目录及文件

mkdir

mkdir(parents=False,exist_ok=False) 创建目录
parents:是否创建父目录,True等同mkdir -p;False时,父目录不存在,则抛出FileNotFoundError
exist_ok:在3.5版本加入。False时,路径存在,抛出FileExistsError;True时,FileExistsError被忽略

>>> p = Path('C:/Users/Administrator/Desktop/')
>>> p = p / 'test' / 'test1'
>>> p.mkdir(parents=True,exist_ok=True)  # 在桌面上创建test目录,test内创建test1目录

touch

touch(exist_ok=True) 创建一个文件
as_uri() 将路径返回成URI(Uniform Resource Identifier,统一资源标识符,是一个用于标识某一互联网资源名称的字符串)

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值