目录生成器 Directory tree generator.!
walk() 是 generator,直接print() 为 <generator object walk at 0x000001EB1C519888> ,一般常用 for 循环遍历其返回值。
os.walk(top [,topdown=True [,onerror=None [,followlinks=False]]])
函数会遍历 top 目录(包含其本身)下的所有文件夹。
参数:
top - 要遍历的目录地址(字符串形式),分隔符为 /,而不能是 \
topdown - 可选参数,默认True,从 top 向子目录方向生成 tuple 结果;若为 False,则从子目录向 top 根目录方向生成 tuple 结果
onerror - 可选,默认None,需要一个 callable 对象,当 walk 需要异常时,才会被调用。
followlinks -- 可选,默认False,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
返回值:
对于以 top 为根的目录树中的每个目录(包括 top 本身,同时每一层遍历仅为当前文件夹内容,每一层遍历均不包括 ’ . ‘ 和 ’ .. ‘,),产生一个含有 3 元素的元组(yields a 3-tuple):
dirpath, dirnames, filenames
注意,tuple中的名称仅仅是名称,不是完整的路径。要想获取 filenames 的完整路径(以 top开头),请执行
import os for dirpath, dirnames, filesnames in os.walk("D:/project/opencv3", topdown=False): for name in files: print(os.path.join(root, name))
常用示例:
import os # walk 生成器 # print(os.walk("D:/project/opencv3/c6")) # <generator object walk at 0x000001EB1C519888> # "." 当前文件的根目录 # for root, dirs, files in os.walk("."): for root, dirs, files in os.walk("D:/project/opencv3/c6"): # 文件路径 for name in files: print(os.path.join(root, name)) # D:/project/opencv3/c6\test.py # 子文件夹的路径 for name in dirs: print(os.path.join(root, name)) # D:/project/opencv3/c6\python_c6
原文:https://www.cnblogs.com/gengyi/p/10546102.html