您的位置:首页 > 编程语言 > Python开发

python 可控制深度遍历文件夹

2018-03-14 16:29 309 查看
增加深度控制,省的以后写了所以做了记录。大神觉得无聊请绕道
这里只输出了控制深度的最后一层

平台: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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息