Python遍历文件的三种方法

注意:路径是自己给的,必须是真是存在的路径

1、使用递归遍历目录

import os
def getAllDir(path):
    # 获取路径下的文件以及目录
    listFile = os.listdir(path)
    # print(listFile)
    # 遍历列表listFile
    for file in listFile:
        # 进行路径拼接
        fileDir = os.path.join(path, file)
        # 如果是目录就递归
        if os.path.isdir(fileDir):
            # 打印目录名
            print("目录",file)
            getAllDir(fileDir)
        else:
            # 打印文件名
            print("\t文件", file)
getAllDir(r"G:\Users\asus\Desktop\新建文件夹")

2、深度遍历文件(栈遍历)

import os
def stackGetAllFile(path):
    # 创建空栈
    stackList = []
    # 进栈
    stackList.append(path)
    while len(stackList) > 0:
        # 出栈
        stackFile = stackList.pop()
        # 获取当前路径列表
        stackAllFile = os.listdir(stackFile)
        # 遍历列表
        for allFile in stackAllFile:
            # 拼接绝对路径
            absAllFile = os.path.join(path, allFile)
            # 如果是目录就进栈
            if os.path.isdir(absAllFile):
                print("目录", allFile)
                stackList.append(absAllFile)
            else:
                print("\t文件", allFile)
stackGetAllFile(r"G:\Users\asus\Desktop\新建文件夹")

3、广度遍历文件(队列遍历)

import os
import collections
def queuegetdir(path):
    # 创建一个空的队列
    queue = collections.deque()
    # 进队
    queue.append(path)
    while len(queue) > 0:
        # 出队
        filePath = queue.popleft()
        # 列举出出队路径下的所有文件以及文件名
        fileList = os.listdir(filePath)
        for file in fileList:
            # 拼接。获取绝对路径
            absFilePath = os.path.join(filePath, file)
            # 如果是目录,进队
            if os.path.isdir(absFilePath):
                print("目录", file)
                queue.append(absFilePath)
            else:
                print("\t文件", file)
queuegetdir(r"G:\Users\asus\Desktop\新建文件夹")

 

你可能感兴趣的:(Python)