如何用os库的os.walk实现目录遍历?

摘要:Python os库 os.walk使用(详细教程、带实践)
os.walk 处理文件
os.walk原理
Python os库 os.walk使用(详细教程、带实践) -----------------------PS:env python version==3.10---------------- 简介: ​ 本文以实际案例说明os.walk对文件的使用方式。主要教学内容: os.walk库实际的使用 os.walk最佳实践 (可选)os.walk原理 (可选)迭代器方向理解 全文2000字左右,代码字数800(含迭代器180)左右,建议学习时间10-15min(不含迭代器)。若学习迭代器建议30min+ 1 模拟实际使用环境 ​ PS:仅作为案例说明参考,若已有可用的文件夹/目录,请移步第二步 ​ 根据上图模拟实际使用情况: 随意新建一个目录(确保不会有其他文件) 在(新建目录的)根目录创建一个文件和文件夹(名称随意,也可以参照我的样例来) 进入root文件夹,新建两个次级文件夹(dir1、dir2) root文件夹下直接创建次级目录文件F1.txt 创建次级目录文件dir1、dir2 进入dir2文件夹 创建文件(F2.txt) 2 解析os.walk函数 面向基础讲解,详细见 os.walk官方说明 什么是 python 的os库 本模块提供了一种使用与操作系统相关的功能的便捷式途径。(如文件路径控制、文件信息获取、遍历目录文件【os.walk】、其他系统调用功能) os.walk函数讲解: os.walk(top, topdown=True, onerror=None, followlinks=False) 主要聚焦于前两个参数即可: top:根目录路径(str) topdown:自上而下模式,默认(True)为自上而下遍历,False则从底向上遍历 返回值: 返回迭代器 ,迭代器每次生成的对象为:(dirpath, dirnames, filenames) dirpath: 当前文件夹路径 dirnames:文件夹名称 filenames:文件名称 如果不理解迭代器,可以暂时理解为os.walk返回了 元组 (dirpath, dirnames, filenames)的列表,类似于下文 (省略双引号): [ (C:/user/, [root],[rott_text.txt] ), #根目录 (C:/user/root, [dir1,dir2],[F1.txt] ), #进入root文件夹 (C:/user/root/dir1, [],[] ), #进入dir1文件夹 (C:/user/root/dir2, [],[F2.txt] ) #dir1中没有文件了,退回上一层级,进入dir2文件夹中 #读取所有文件/文件名完毕, ] 只不过他生成的特殊“列表”经常适用于for,不能直接作为列表打印,直接打印是这样子的: #code dir_path = r'your_dir' #替换为你的文件夹 dirpath, dirnames, filenames = os.walk(dir_path) print(f'dir_path:{dirpath}\ndir_name:{dirnames}\nfile_names:{filenames}') #result: dirpath, dirnames, filenames = os.walk(dir_path) ValueError: too many values to unpack (expected 3) 究其原因是返回的单个迭代器,并非三个列表元组,喜欢细究这部分的见后文,简要的话知道不能直接调用,一般结合for调用就好,这个并非深度挖掘,看完后面会看可能有更好的理解。
阅读全文