递归的逻辑比较简单,如下:
- 进入到当前路径下时,先创建一个空列表A来保存文件名
- 遍历当前文件夹中每一项
- 如果是文件,就放到列表中
- 如果是文件夹,那就递归进去,返回值是内层的文件列表,归并到A中
- 最终返回列表A
代码如下:
import os
def findFiles (curPath):
fileList = [] # 当前这层的文件名都放在这个列表里
# 遍历当前路径所有目录(文件及文件夹)
names = os.listdir(curPath)
for name in names:
# 访问这个目录,先把它的路径拼接好
path = os.path.join(curPath, name)
# 判断一下它是文件夹还是文件
if os.path.isdir(path): # 是文件夹,那就递归下去
innerFileList = findFiles(path) # 把内层的返回的找到的文件列表保存下来
fileList += innerFileList # 内层找到的合并到外层的上
else: # 是文件
fileList.append(name) # 放到列表中即可
return fileList
files = findFiles(r"C:\Users\JM1307\Desktop\test")
print(files)