您的位置:首页 > 编程语言 > Python开发

python中如何遍历文件夹及其子文件夹中的所有文件(附实现代码)

2018-10-27 15:24 1961 查看

【时间】2018.10.27

【题目】python中如何遍历文件夹及其子文件夹中的所有文件

目录

概述

一、使用os.listdir()函数+递归的方式实现

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

概述

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

 

一、使用os.listdir()函数+递归的方式实现

【实现代码】:

[code]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()函数实现

 

【实现代码】

[code]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, onerror=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 , 内容是该文件夹中所有的文件(不包括子目录)

 

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: