列表模拟栈
li=['目录1','目录2','目录3','目录4','目录5','目录6',]
栈:遍历-----> li.pop() 得到目录6,当目录6遍历完 依次》》》知道遍历到目录1 栈特点,深度遍历
import collections
队列:遍历----->collections.deque(列表) 返回一个queue对象 使用queue.popleft 返回的是一个目录1 依次》》知道遍历到目录1
队列特点:广度优先
# 递归遍历目录
def recursion(path):
# 返回一个当前path下的目录文件列表
listfile=os.listdir(path)
# 遍历列表
for filename in listfile:
# 拼接filename 的路径
abspath=os.path.join(path,filename)
#
if os.path.isdir(abspath):
print("这是一个目录%s"%filename)
# 把path递归
recursion(abspath)
if os.path.isfile(abspath):
print("这是一个文件%s"%filename)
recursion(r'目录')
# 栈遍历目录
def get_dir(path):
# 栈
mystatck = []
mystatck.append(path)
while mystatck:
path = mystatck.pop()
listfile = os.listdir(path)
for filename in listfile:
abspath = os.path.join(path, filename)
if os.path.isdir(abspath):
print("这是一个目录%s" % filename)
mystatck.append(abspath)
if os.path.isfile(abspath):
print("文件%s" % filename)
get_dir(r'目录')
# 队列遍历目录
import collections
def queue_dir(path):
queue = collections.deque([])
queue.append(path)
while queue:
path=queue.popleft()
filelist=os.listdir(path)
for filename in filelist:
abspath=os.path.join(path,filename)
print(abspath)
time.sleep(3)
if os.path.isdir(abspath):
queue.append(abspath)
# print("目录%s"%filename)
else:
# print("文件%s"%filename)
pass
# queue_dir(path)