递归函数,深度的获取一个路径下的全部子目录和子文件
递归VSwhile循环
while循环的要点
- 循环外部要的初始条件
- 合理的循环条件(当条件不符合时,会退出,即明确了一个退出循环的时机)
- 循环内部要有对条件的修改
函数递归的要点
函数内部,自己调用自己
要有一个退出返回的时机
它可以类比于无限循环
无限循环的格式
while True:
要做的事件
if 条件:
break
递归的格式
def func(arg):
要做的事件
if 条件:
return
func(arg2)
func(实参)
函数递归的走势图
案例,递归处理每一个文件
本例子只适用于课堂上的例子,理解
import os
from bin import file
total_list = []
# 把一个文件转为列表包字典
def trans_txt_2_list(file_path):
data_list = file.File().format_txt2data(file_path)
return data_list
def get_deep_list(path):
list_dir = os.listdir(path)
for member in list_dir:
new_path = os.path.join(path, member)
if os.path.isdir(new_path):
get_deep_list(new_path)
else:
data_list = trans_txt_2_list(new_path)
total_list.extend(data_list)
print("当前总题数%d" %len(total_list))
get_deep_list(os.getcwd())
for i in total_list:
print(i)