目的: 获得某目录下(含子目录)的所有文件的名称。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(file_dir):
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)
致谢:
【1】python递归列出目录及其子目录下所有文件
【2】Python获取指定目录下所有子目录、所有文件名
【3】python获取某目录下(含子目录)所有文件名称