python获取某目录下(含子目录)所有文件名称

目的:获得某目录下(含子目录)的所有文件的名称。os.listdir函数只能列举当前目录下的文件名称。所以参考写了一个递归函数如下(注意因为是递归函数,所以这个flist 的变量需要在定义的子函数之外。):

import os
flist = []
def getFlist(path):
    global flist
    lsdir = os.listdir(path)
    dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
    if dirs:
        for i in dirs:
            getFlist(os.path.join(path, i))
    files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]
    for file in files:
        flist.append(file)
    return flist
resDir = 'res'
flist = getFlist(path)

还有另外一个更为简单的方法,就是使用os.walk函数,代码如下:

import os
def getFlist(path):
    for root, dirs, files in os.walk(file_dir):
        print('root_dir:', root)
        print('sub_dirs:', dirs)
        print('files:', files)
    return files
resDir = 'res'
flist = getFlist(resDir)

致谢:python递归列出目录及其子目录下所有文件
TreeSir

posted @ 2020-02-19 09:56  songbiao  阅读(11433)  评论(0编辑  收藏  举报