美文网首页
python中如何遍历文件夹及其子文件夹中的所有文件

python中如何遍历文件夹及其子文件夹中的所有文件

作者: 42c64edf12e9 | 来源:发表于2019-10-25 20:39 被阅读0次

    概述
    本文提供了python中如何遍历文件夹及其子文件夹中的所有文件的两种方法。两者均返回文件名列表(可以选择文件名列表或者是包含完整路径的文件名列表)。一种是使用os.listdir()函数+递归的方式,另一种用到了os.walk()函数,第二种方法比较简便。

    一、使用os.listdir()函数+递归的方式实现
    【实现代码】:

    import os
     
     
    image_path = 'F:\\test\\frames'
     
     
    # 遍历文件夹及其子文件夹中的文件,并存储在一个列表中
     
    # 输入文件夹路径、空文件列表[]
     
    # 返回 文件列表Filelist,包含文件名(完整路径)
     
    def get_filelist(dir, Filelist):
     
        newDir = dir
     
        if os.path.isfile(dir):
     
            Filelist.append(dir)
     
            # # 若只是要返回文件文,使用这个
     
            # Filelist.append(os.path.basename(dir))
     
        elif os.path.isdir(dir):
     
            for s in os.listdir(dir):
     
                # 如果需要忽略某些文件夹,使用以下代码
     
                #if s == "xxx":
     
                    #continue
     
                newDir=os.path.join(dir,s)
     
                get_filelist(newDir, Filelist)
     
        return Filelist
     
     
     
    if __name__ =='__main__' :
     
        list = get_filelist('F:\\test\\frames', [])
     
        print(len(list))
     
        for e in list:
     
            print(e)
    

    【补充说明】:

    1、os.path.basename()函数用于返回路径path最后的文件名。若path以/或\结尾,那么就会返回空值。例如:

    二、使用os.walk()函数实现

    【实现代码】

    import os
     
    path ='F:\\test\\frames'
     
    def get_filelist(dir):
     
        Filelist = []
     
        for home, dirs, files in os.walk(path):
     
            for filename in files:
     
                # 文件名列表,包含完整路径
     
                Filelist.append(os.path.join(home, filename))
     
                # # 文件名列表,只包含文件名
     
                # Filelist.append( filename)
     
        return Filelist
     
    if __name__ =="__main__":
     
        Filelist = get_filelist(dir)
     
        print(len( Filelist))
     
        for file in  Filelist :
     
            print(file)
     
    

    【补充说明】:

    1、os.walk的函数声明为:

    walk(top, topdown=True, οnerrοr=None, followlinks=False)

    参数

    top 是你所要便利的目录的地址

    topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)

    onerror 需要一个 callable 对象,当walk需要异常时,会调用

    followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)

    os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。

    每次遍历的对象都是返回的是一个三元组(root,dirs,files)

    root 所指的是当前正在遍历的这个文件夹的本身的地址

    dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)

    files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

    相关文章

      网友评论

          本文标题:python中如何遍历文件夹及其子文件夹中的所有文件

          本文链接:https://www.haomeiwen.com/subject/iuuevctx.html