Python实现深度遍历与广度遍历

1、深度遍历

import os
rootpath=r"C:\Desktop\tools\MemSearch"
mystack=[]
mystack.append(rootpath)
while   len(mystack)!=0:
    path=mystack.pop()#弹出的路径
    print("文件夹   ",path)
    filenamelist=os.listdir(path) #列举文件夹下所有文件名
    for  filename in  filenamelist:#遍历所有文件名
        filepath=os.path.join(path,filename)#取得绝对路径
        if  os.path.isdir(filepath):
            mystack.append(filepath) #文件夹,压入栈
        else:
            print("文件  ",filepath)

2、深度层次循环

import os
rootpath=r"C:\Users\Desktop"
mystack=[]
mystack.append([rootpath,0])#rootpath,路径
while   len(mystack)!=0:
    pathlist=mystack.pop()#弹出的路径

    num=pathlist[1] #取出层次

    headstr=""
    for i  in range(num):
        headstr+="----"   
    #每一层的前缀,显示一层

    if  os.path.isdir(pathlist[0]):
        print(headstr,"文件夹   ",pathlist[0])

        num+=1
        headstr+="----"  #层次 +1,

        filenamelist=os.listdir(pathlist[0]) #列举文件夹下所有文件名
        for  filename in  filenamelist:#遍历所有文件名
            filepath=os.path.join(pathlist[0],filename)#取得绝对路径
            if  os.path.isdir(filepath):
                mystack.append([filepath,num]) #文件夹,压入栈
            else:
                print(headstr,"文件  ",filepath)

    else:
        print(headstr,"文件  ",pathlist[0])

3、广度遍历

import os
import collections

path=r"C:\Users\Desktop"
myqueue=collections.deque([])#空队列
myqueue.append(path)

while  len(myqueue)!=0:
    path=myqueue.popleft()#取出路径
    filelist=os.listdir(path)#遍历文件夹,如果是文件就是空集合
    for  filename in filelist:
        filepath=os.path.join(path,filename)#绝对路径
        if  os.path.isdir(filepath):
            print("文件夹",filepath)
            myqueue.append(filepath)
        else:
            print("文件",filepath)
算法 
更新时间:2015-03-05 17:16:29

本文由 智慧煮粥 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:http://zz.zzhub.cn/archives/python实现深度遍历与广度遍历
最后更新:2015-03-05 17:16:29

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×