您当前的位置:首页 > 计算机 > 编程开发 > Python

Python使用广度优先和深度优先两种方法遍历目录树

时间:09-09来源:作者:点击数:

代码不长,并且加了很多注释,就不再多说明了。

from os import listdir

from os.path import join, isfile, isdir

def listDirWidthFirst(directory):

    '''广度优先遍历文件夹'''

    #使用列表模拟双端队列,效率稍微受影响,不过关系不大

    dirs = [directory]

    #如果还有没遍历过的文件夹,继续循环

    while dirs:

        #遍历还没遍历过的第一项

        current = dirs.pop(0)

        #遍历该文件夹

        #如果是文件就直接输出显示

        #如果是文件夹,输出显示后,标记为待遍历项

        for subPath in listdir(current):

            path = join(current, subPath)

            if isfile(path):

                print(path)

            elif isdir(path):

                print(path)

                dirs.append(path)

def listDirDepthFirst(directory):

    '''深度优先遍历文件夹'''

    #遍历文件夹

    #如果是文件就直接输出

    #如果是文件夹,就输出显示,然后递归遍历该文件夹

    for subPath in listdir(directory):

        path = join(directory, subPath)

        if isfile(path):

            print(path)

        elif isdir(path):

            print(path)

            listDirDepthFirst(path)

directory = r'F:\test'

listDirWidthFirst(directory)

print('='*30)

listDirDepthFirst(directory)

由于手机屏幕大小不同,很难有统一的排版方式,考虑了一下,对于较短的代码,我把截图一起发上来,这样比较好对照,尤其是代码的缩进。

代码运行结果类似于下面图中的样子:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门