PurePath类用法
#coding=utf-8
import pathlib
pathlib是python3才引入的包
PurePath类用法:
#windows系统:pathlib.PurePath()
path=pathlib.PurePath(“file1.txt”)
print(path) #结果:file1.txt
print(type(path)) #结果: path为PureWindowsPath对象
path2=pathlib.PurePath(“http”,”www”,”baidu”)
print(path2) #结果:http\www\baidu,当pathlib.PurePath参数为多个时,会将其自动拼接;但此拼接的路径仅适合windows系统
path3=pathlib.PurePosixPath(“http”,”www”,”baidu”)
print(path3) #结果:http/www/baidu,使用PurePosixPath拼接后返回路径适合linux系统
path4=pathlib.PurePath()
path5=pathlib.PurePath(‘.’)
print(path4) #结果:. 表示当前路径
print(path5) #结果:. 表示当前路径
#传入 pathlib.PurePath 构造方法中的多个参数中,包含多个根路径,则只会有最后一个根路径及后面的子路径生效
path6=pathlib.PurePath(“c://”,”e://”,”HDCZU_TEST”)
print(path6) #结果:e:\HDCZU_TEST
#传入 pathlib.PurePath 构造方法中的参数中,包含有多余的斜杠或者点( . ,表示当前路径),会直接被忽略( .. 不会被忽略)
path7=pathlib.PurePath(“C://./my_file.txt”)
print(path7) #结果:C:\my_file.txt
print(pathlib.PurePosixPath(‘/DATA’)==pathlib.PurePosixPath(‘/data’))
#结果:False , unix系统对路径区分大小写
print(pathlib.PureWindowsPath(“C:/my_file.txt”)==pathlib.PureWindowsPath(“c:/my_file.txt”))
#结果:True , windows对路径不区分大小写
path8=pathlib.PurePath(“c://”) #PurePath 类对象支持直接使用斜杠(/)作为多个字符串之间的连接符
print(path8 / “my_file.txt”) #结果:c:\my_file.txt
Path类用法
Path类用法:
Path类是PurePath的子类
path1=pathlib.Path(“Test”)
print(path1) #结果:Test
path2=pathlib.Path(“Test”,”test”)
print(path2) #结果:Test\test , 自动拼接多个参数形成路径
path3=pathlib.Path()
path4=pathlib.Path(“.”)
print(path3) #结果: . 表示当前路径
print(path4) #结果: . 表示当前路径
path5=pathlib.Path().joinpath(“E:”,”HDCZU_Test”,”Test”)
print(path5) #结果:E:HDCZU_Test\Test,E有冒号时直接和后面参数拼接
path6=pathlib.Path().joinpath(“E”,”HDCZU_Test”,”Test”)
print(path6) #结果:E\HDCZU_Test\Test,E没有冒号时采用发斜线和后面参数拼接
path7=pathlib.Path(“C:/Users/Administrator/Desktop/”)
print(type(path7)) #结果:,是个WindowsPath对象,因此要想获取路径,可使用str()转换成字符串
print(str(path7)) #结果:C:\Users\Administrator\Desktop
print(bytes(path7)) #结果:b’C:\\Users\\Administrator\\Desktop’,
#parent获取父路径,patents获取父路径序列可迭代
path8=pathlib.Path(“C:/Users/Administrator/Desktop/”)
print(path8.parent) #结果:C:\Users\Administrator
print(path8.parent.parent) #结果:C:\Users
for path in path8.parents:
print(path)
“””
结果:
C:\Users\Administrator
C:\Users
C:\
“””
“””
name 目录的最后一个部分
suffix 目录中最后一个部分的扩展名
suffixes 返回多个扩展名列表
stem 目录最后一个部分,没有后缀
with_name(name) 替换目录最后一个部分并返回一个新的路径
with_suffix(suffix) 替换扩展名,返回新的路径,扩展名存在则不变
“””
path9=pathlib.Path(“/path/file.tar.gz”)
print(path9.name) #结果:file.tar.gz
print(path9.suffix) #结果: .gz
print(path9.suffixes) #结果:[‘.tar’, ‘.gz’]
print(path9.stem) #结果:file.tar
print(path9.with_name(“dchu.oth”)) #结果:\path\dchu.oth
print(path9.with_suffix(“.zip”)) #结果:\path\file.tar.zip
path10=pathlib.Path()
print(path10.cwd()) #结果:返回当前路径新对象 E:\HDCZU_Test\Test
path11=pathlib.Path()
print(path11.home()) #结果:返回一个表示当前用户HOME目录的新路径对象 C:\Users\admin
“””
判断路径的类型
返回:布尔值
is_dir() 是否是目录
is_file() 是否是普通文件
is_symlink() 是否是软链接
is_socket() 是否是socket文件
is_block_device() 是否是块设备
is_char_device() 是否是字符设备
is_absolute() 是否是绝对路径
“””
path12=pathlib.Path(“../Test”)
print(path12.is_dir()) #结果:True
path13=pathlib.Path(“file1.txt”)
print(path13.is_file()) #结果:True
path14=pathlib.Path(“.”)
print(path14.resolve()) #结果:返回绝对路径,如果是软链接则直接被解析 E:\HDCZU_Test\Test;也可以使用path14.absolute()但推荐使用resolve()
#判断是否存在
path15=pathlib.Path(r”E:\\HDCZU_Test\\Test\\file1.txt”)
print(path15.exists()) #结果:True
#删除共目录
#pathlib.Path(r”E:\\HDCZU_Test\\Test\\CeShi”).rmdir()
#创建空文件
#pathlib.Path(r”E:\\HDCZU_Test\\Test\\Myfile.txt”).touch()
#创建目录
#pathlib.Path(r”E:\\HDCZU_Test\\Test\\CeShi”).mkdir()
#迭代当前目录
path16=pathlib.Path(“.”)
for path in path16.iterdir():
print(path)
path0=pathlib.Path(“.”)
print(path0.samefile(r”c:\\MyTest”))
判断path0的路径和samefile(path)的路径是否相同返回bool值
print(‘===========================’)
#glob(pattern)通配给定的模式
#rglob(pattern)通配给定的模式,递归目录
path17=pathlib.Path(“.”).glob(“file*”) #匹配出当前路径下以file开头的文件或目录
print(type(path17)) #结果:,glob()返回的是生成器
for path in path17:
print(path)
“””
结果:
file1.txt
file2.txt
file3 查找到当前目录下file3目录就不在查找
“””
path18=pathlib.Path(“.”).rglob(“file*”)
print(type(path18)) #结果:,rglob()返回的是生成器
for path in path18:
print(path)
“””
结果:
file1.txt
file2.txt
file3
file3\file4.txt 查找到当前目录file3后,还会继续递归file3目录是否有满足的结果
“””
#读取文件,同内键函数open()相似
path19=pathlib.Path(r”E:\\HDCZU_Test\\Test\\file1.txt”)
with path19.open() as f:
res=f.read()
print(res)
#read_bytes(),以二进制读取文件,返回二进制文件流
#write_bytes(),以”rb”写入二进制到文件
path20=pathlib.Path(r”E:\\HDCZU_Test\\Test\\file3.txt”)
path20.write_bytes(b”Binary file contents”)
print(path20.read_bytes()) #结果:b’Binary file contents’
#read_text(),以”rt”读取文件返回文本
#write_text(),以”wt”写入字符串到文件
path21=pathlib.Path(r”E:\\HDCZU_Test\\Test\\file4.txt”)
path21.write_text(“test text”)
print(path21.read_text()) #结果:test text