python中路径操作

路径模块操作
在.4之前版本需要使用os.path模块 , 返回的都是字符串
#路径拼接from os import pathp=path.join('/etc','sysconfig','network')print(type(p),p)print(path.exists(p))
#路径分割print(path.split(p))print(path.dirname(p),path.basename(p)) #路径和基名print(path.abspath(""),path.abspath(".")) #据对路径print(path.splitdrive("c:/Users/ASUS"))#Windows下取逻辑分区
逐级提取父目录import osfrom os import pathp2='/a/b/c/d/e/f.tar'while p2!=path.dirname(p2):p2=path.dirname(p2)print(p2)
模块
.4版本开始使用模块 , 提供Path对象来操作 , 包括目录和文件
初始化
from pathlib import Pathp=Path()p.absolute(),p,type(p),type(p.absolute())
路径拼接
from pathlib import Pathp=Path().absolute()print(p)p1=Path(p/'a')print(p1)p2=Path('c')p3=p2/p1print(p3)print(p3.parts)p3.joinpath('stc','init.d',Path('httpd'))
路径拼接和分解
操作符/:Path对象/Path对象 , Path对象/字符串或者字符串/Path对象
分解:parts属性 , 可以返回路径中的每一个部分
获取路径
str获取路径字符串
bytes获取路径字符串的bytes
p=Path('etc')print(str(p),bytes(p))
父目录
目录的逻辑父目录
父目录序列 , 可迭代对象 , 索引0是直接的父
p=Path('/a/b/c/d')print(p.parent.parent)for x in p.parents:print(x)

python中路径操作

文章插图
目录组成部分
name、stem、、、()、(name)
name 目录的最后一部分
目录最后一部分的扩展名
stem 目录最后一个部分 , 没有后缀
name =stem+
返回多个扩展名列表
()有扩展名则替换 , 无扩展名则补充扩展名
(name)替换目录最后一个部分并返回一个新的路径
print(p)print(p.name)#显示最后一项print(p.suffix)#显示后缀print(p.stem)#显示最后一项除后缀的部分print(p.suffixes)#显示最后一项的后缀print(p.with_name('jks.jpg'))#改变最后一项print(p.with_suffix('.py'))#改变后缀
全局方法
判断方法
()目录或文件是否存在
()是否是目录 , 目录返回True
()是否是普通文件 , 文件存在返回True
()是否是软链接
()是否是文件
()是否是块设备
()是否是字符设备
()是否是绝对路径
当所判断的文件存在才能正常判断
绝对路劲
()获取绝对路径
判断一个文件类型和是否为空
for i in Path.cwd().iterdir():if i.is_dir():print(i,i.name)flag=1for j in i.iterdir():#若为空则不会进入 , flag值不会改变flag=0print(i.name ,'kong' if flag==1 else'bu') elif i.is_file():print(i,i.name)
删除、创建文件或目录
rmdir()删除空目录 , 没有提供判断目录为空的方法
touch(mode=0o666,=True)创建一个文件
mkdir(mode=0o777,=False,=False)
,是否创建父目录 , True等于mkdir-p
创建文件或者目录时需要父目录存在
通配符
glob()通配给定的模式
rglob()通配给定的模式 , 递归目录
都返回一个生成器
?代表一个字符
*表示任意个字符
[abc]或[a-z]表示一个字符
匹配
match()模式匹配 , 成功返回True
stat()相当于stat命令
()同start() , 但如果是符号链接 , 则显示符号链接本身的文件信息