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郑州看妇科那个医院好 http://mobile.120zzzy.com/
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,统一资源标识符,是一个用于标识某一互联网资源名称的字符串)