增加深度控制,省的以后写了所以做了记录。大神觉得无聊请绕道
这里只输出了控制深度的最后一层
平台:windows10
Python环境:2.7 64位
#coding:utf-8
import os
#遍历文件夹,获得所有文件夹和文件夹的list,获得所有文件夹的list,获得所有文件的list
def Depth_Ergodic(filepath,all_list,allpath_list,allfile_list):
#遍历filepath下所有文件,包括子目录
files = os.listdir(filepath)
for fi in files:
fi_d = os.path.join(filepath,fi)
all_list.append(fi_d);
if os.path.isdir(fi_d):
Depth_Ergodic(fi_d,all_list,allpath_list,allfile_list)
allpath_list.append(fi_d);
else:
allfile_list.append(os.path.join(filepath,fi_d));
return all_list,allpath_list,allfile_list;
#可控深度遍历,深度值控制遍历深度,sign确认是否进行深度可控,如果需要控制深度则只输出最深层获得的所有的目录
def Depth_Ergodic_new(filepath,allpath_list,depth_value,sign=True):
if sign:
#遍历filepath下所有文件,包括子目录
depth_value-=1;
if depth_value>=0:
files = os.listdir(filepath)
for fi in files:
fi_d = os.path.join(filepath,fi)
if os.path.isdir(fi_d):
Depth_Ergodic_new(fi_d,allpath_list,depth_value,sign)
if depth_value==0:
allpath_list.append(fi_d);
else: pass
# print os.path.join(filepath,fi_d)
else:
files = os.listdir(filepath)
for fi in files:
fi_d = os.path.join(filepath,fi)
if os.path.isdir(fi_d):
Depth_Ergodic_new(fi_d,allpath_list,depth_value,sign)
allpath_list.append(fi_d);
return allpath_list;
all_list=[];
allpath_list=[];
allfile_list=[];
all_list,allpath_list,allfile_list = Depth_Ergodic(r"C:\monitor_log\CASE_CE_temp_TT",all_list,allpath_list,allfile_list);
for path in allpath_list:
print path;
for file in allfile_list:
print file;
for file in all_list:
print file;
depth_value=3;
allpath_list = Depth_Ergodic_new(r"C:\monitor_log\CASE_CE_temp_TT",[],depth_value,False);
for path in allpath_list:
print path;