目的:获得某目录下(含子目录)的所有文件的名称。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)