python pathlib模块_python3的pathlib模块

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值