递归:
递归是一种非常重要的算法,其中函数调用自身一次或多次,直到达到一个特定的条件为止,即方法(函数)自己调用自己。注意,递归需要小心处理,因为如果没有正确的退出条件或递归太深,它可能会导致堆栈溢出或无限循环。
例如:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5))
在上面的函数中,factorial 函数调用自身,每次将 n 减少 1,直到 n 等于 0。在每次调用中,函数都会计算 n 的阶乘并将其返回,直到函数最终返回 1。
使用递归获取文件夹内所有的内容:
def get_files_recursion_from_dir(path):
"""
从指定的文件夹中使用递归的方式,获取全部的文件夹
:param path: 要查询的文件夹路径
:return: list,包含全部文件,如果路径不存在或者没有文件返回空
"""
import os
file_list = {"files": [], "childer": []}
# 如果给的文件已经是一个文件夹就进行操作
if os.path.isdir(path):
if os.path.exists(path):
for item in os.listdir(path):
new_path = path + "/" + item
if os.path.isdir(new_path):
# 进入到这里表明这个目录还是文件夹
file_list["childer"] = get_files_recursion_from_dir(new_path)
else:
file_list["files"].append(new_path)
else:
print("查找的路径不存在")
return []
return file_list
os模块:
- .listdir() 可以列出文件夹下有哪些内容
- .path.isdir() 判断给的文件是不是一个文件夹
- .path.exists() 判断一个路径是否存在