import os
def BFS_Dir(path, dirCallback = None, fileCallback = None):
queue = []
ret = []
queue.append(path);
while len(queue) > 0:
tmp = queue.pop(0)
if(os.path.isdir(tmp)):
ret.append(tmp)
for item in os.listdir(tmp):
queue.append(os.path.join(tmp, item))
if dirCallback:
dirCallback(tmp)
elif(os.path.isfile(tmp)):
ret.append(tmp)
if fileCallback:
fileCallback(tmp)
return ret
def DFS_Dir(path, dirCallback = None, fileCallback = None):
stack = []
ret = []
stack.append(path);
while len(stack) > 0:
tmp = stack.pop(len(stack) - 1)
if(os.path.isdir(tmp)):
ret.append(tmp)
for item in os.listdir(tmp):
stack.append(os.path.join(tmp, item))
if dirCallback:
dirCallback(tmp)
elif(os.path.isfile(tmp)):
ret.append(tmp)
if fileCallback:
fileCallback(tmp)
return ret
def printDir(path):
print "dir: " + path
def printFile(path):
print "file: " + path
b = BFS_Dir(r'C:\tmp', printDir, printFile)
d = DFS_Dir(r'C:\tmp', printDir, printFile)python遍历文件夹——深度优先(DFS)/广度优先(BFS)
最新推荐文章于 2026-05-24 21:46:18 发布
本文介绍了两种文件系统遍历算法:广度优先搜索(BFS)和深度优先搜索(DFS),并提供了Python实现代码。这两种算法可以用于遍历指定路径下的所有目录及文件,并支持回调函数以处理每个遍历到的目录或文件。
1550

被折叠的 条评论
为什么被折叠?



