1.用递归的思想遍历
import os
del getALLPath(path):
#显示path路径下指定的文件名和目录名,以列表的方式显示
dirList = os.listdir(path)
#遍历这个列表
for filename in dirList:
#将文件名拼接到path下,形成一个新地址
abspath = os.path.join(path,filename)
#判断新地址是否是目录
if os.path.isdir(abspath):
#若是打印此目录,调用getAllPath方法
print("目录:",abspath)
getAllPath(abspath)
else:
#打印文件名
print("文件:",abspath)
2.用队列的思想遍历
注意:python中本身没有队列,只是用列表来模仿队列的思想
import os
def getallstack(path):
#创建一个列表
stack = []
#将路径添加到列表中
stack.append(path)
#当stack为真,即stack中不为空时,执行此循环
while stack:
#删除列表中的最后一个元素,并且返回被删除的元素
filepath = stack.pop()
#以列表的方式显示path路径下指定的文件名和目录名
fileList = os.listdir(filepath)
for filename in fileList:
abspath = os.path.join(filepath,filename)
if os.path.isdir(abspth):
print('目录:',abspath)
#将是目录的路径添加进列表中
stack.append(abspath)
else:
print('文件:',abspath)
3.用栈的思想遍历
注意:python中本身没有栈,只是用列表来模仿栈的思想
#collections必须要导入,之后要用到它提供的方法
import collections
import os
def getallqueue(path):
queue = []
queue.append(path)
while queue:
#与队列的思想最大的不同,它是先进先出的
#popleft方法由collections模块提供
filepath = queue.popleft()
fileList = os.listdir(filepath)
for filename in fileList:
abspath = os.path.join(filepath,filename)
if os.path.isdir(abspath):
print('目录:',abspath)
queue.append(abspath)
else:
print('文件:',abspath)
调用一下上面的函数:
#r'路径' r用来表示字符串中的‘\’不转义
path = r'E:\Python1905\Python编程'
print('递归')
getALLPath(path)
print('\n栈')
getallstack(path)
print('\n队列')
getallqueue(path)