os.walk()用法

2023-02-05 13:38:24

os.walk()函数

os.walk()用类似于深度遍历的方式遍历文件夹中的子文件夹以及文件。最基本的显示方式为(root_path,[file_dirs],[files]),比如文件夹dirty中有两个子文件夹toner、dirty以及一些图片文件,那么第一层显示方式为(~/dirty,[toner/dirty],[image1、image2、imag3…]),第二层显示方式为(~/dirty/toner,[],[image1,image2,image3…])、(~/dirty/dirty,[],[image1,image2,image3…])

下文将用代码详细解析这个函数

import os

image_path = '/home/yqw/Project/yt-image-classify/Picture/training20180501/dirty'
for x in os.walk(image_path):
    print(x)

截图

可以看到os.walk()以元组为单位区分每一层的,每一层又分成三个部分根目录路径、本目录中文件夹名字、本目录中文件名字。第一层的目录是”~/dirty’,第一层中的文件夹有toner,dirty,然后遍历第二层,可以发现第二层的第一个文件夹目录’~/dirty/toner’此目录中没有子文件夹,第二个文件夹目录为’~/dirty/dirty’。

当然也可以把os.walk()的三个元素分开,代码如下

import os 
image_path = '/home/yqw/Project/yt-image-classify/Picture/training20180501/dirty'
for root, dirs, files in os.walk(image_path):
    print("root:"+root)
    print(dirs)
    print(files)

这里写图片描述

可以看到遍历三次,每次三个元素root、dirs、files

遍历文件的例子

import os 
image_path = '/home/yqw/Project/yt-image-classify/Picture/training20180501/dirty'
root = [x[0] for x in os.walk(image_path)]
dirs = [x[1] for x in os.walk(image_path)]
images = [x[2] for x in os.walk(image_path)]
# 遍历所有文件,因为images是一个嵌套list
def printList(list1):
    for elements in list1:
        if isinstance(elements, list) or isinstance(elements, tuple):
            printList(elements)  # 递归调用函数本身进行深层次的遍历
        elif isinstance(elements, dict):
            for i in elements.items():
                print(i)
        else:
            print(elements)
  • 作者:爱抓猫的狗
  • 原文链接:https://blog.csdn.net/u012300744/article/details/81185474
    更新时间:2023-02-05 13:38:24