Python遍历对文件夹进行级联遍历os.walk()

 

当你调用 os.walk(folder_path) 函数时,它会遍历指定的文件夹 folder_path 及其所有子文件夹中的文件和文件夹。

递归遍历的逻辑如下:

  1. 首先,函数从指定的 folder_path 文件夹开始遍历。
  2. 对于当前遍历的文件夹,它会返回一个三元组 (root, dirs, files)
    • root:当前正在遍历的文件夹路径(字符串)。
    • dirs:一个列表,包含当前文件夹中的子文件夹的名称(字符串列表)。
    • files:一个列表,包含当前文件夹中的文件的名称(字符串列表)。
  3. 接下来,对于每个子文件夹,函数将递归地调用 os.walk() 函数,继续遍历子文件夹中的文件和文件夹。这样就形成了一个递归的遍历过程,直到遍历完所有的子文件夹。
  4. 在遍历过程中,每次迭代都会返回一个新的三元组,表示下一个文件夹的信息,直到遍历完成。

你可以使用 for 循环来迭代这个生成器,如下所示:


import os



# 级联便利文件夹
def traverse_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        print("Folder:", root)
        print("Subfolders:", dirs)
        print("Files:", files)
        print()

if __name__ == '__main__':

    # 指定要遍历的文件夹路径
    folder_path = '/path/to/folder'

    # 调用函数遍历文件夹
    traverse_folder(folder_path)

案例:遍历指定文件夹及其子文件夹中的所有图片文件,并记录它们的地址信息

import os

#遍历文件夹下的所有图片文件,并记录图片地址信息
def find_images(folder_path, extensions=['.jpg', '.jpeg', '.png', '.gif']):
    image_files = []
    
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if any(file.lower().endswith(ext) for ext in extensions):
                image_path = os.path.join(root, file)
                image_files.append(image_path)
    
    return image_files


if __name__ == '__main__':
    # 指定要遍历的文件夹路径
    folder_path = '/path/to/folder'

    # 调用函数查找图片文件
    image_files = find_images(folder_path)

    # 打印图片地址信息
    for image_path in image_files:
        print(image_path)

你可能感兴趣的:(python)