python基础—pathlib模块

时间:2022-07-22
本文章向大家介绍python基础—pathlib模块,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

有两个模块可用

  • os模块中的path
  • pathlib中的Path

这里说下pathlib模块,只要python版本大于3.4 都自带标准库pathlib

使用方法

from path lib import Path

目录操作

p = Path()   #当前目录   初始
p = Path(‘a’,’b’,’c’,’d/e’)    #当前目录下的a/b/c/d/e
p = Path(‘/etc’)    #根目录下的etc目录

路径拼接与分解

分解

同时拼接多个字符串

父目录

parents 父目录序列,索引0相当于/根目录

也可以像访问列表那样,通过输入索引来获取值

其他方法介绍

name  目录的最后一部分,可以是文件名,也可以是目录名
suffix  目录中最后一个部分的扩展名
stem   目录最后一个部分,没有后缀
suffixes   返回多个扩展名列表,可以对比下suffix来看
cwd()   返回当前目录
home()  返回当前价目录
is_dir()  是否是目录
is_file()  是否是普通文件
is_symlink()  是否是软链接
is_socker()   是否是socket文件
is_block_device()  是否是块设备
is_char_device()  是否是字符设备
is_absolute()   是否是绝对路径
exists() 目录或文件是否存在
rmdir() 删除空目录
touch(mode=0o666,exist_ok=True) 创建空文件
mkdir(mode=0o777,parents=False,exist_ok=False) 创建目录,parents=True时,相当于mkdir -p,False时则会报错FileNotFountError,exist_ok=True时,FileNotFoundError被忽略
iterdir() 迭代当前目录

练习

遍历目录,并判断文件类型,如果是目录再判断是否为空

from pathlib import Path


def yourdir(dir_cur):
    '''check file type'''
    for x in Path(dir_cur).parents[0].iterdir():
        print(x,end='t')
        if x.is_dir():
            flag = False
            for _ in x.iterdir():   #如果目录为空,则无法迭代
                flag = True
                break
            print('dir','Not Empty' if flag else 'Empty',sep='t')
        elif x.is_file():
            print('file')
        else:
            print('other file')

if __name__ == '__main__':
    yourdir('/Users/fei/tmp/ops')

这里我们遍历的上级目录下的所有文件。