目录生成器 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

  • dirpath - 字符串str,当前正在遍历的文件夹本身的地址
  • dirnames - 列表list,dirpath 中所有目录的名称(不包括子目录,不包括 ’ . ‘ 和 ’ .. ')
  • filenames - 列表list,dirpath 中所有非目录文件的名称(不包括子目录)。

注意,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

os.walk() 目录生成器的更多相关文章

  1. python3-os模块中的os.walk(目录树生成器)

    #先看源码 def walk(top, topdown=True, onerror=None, followlinks=False): """Directory tree ...

  2. python获取某路径下,某种特定类型的文件名称,os.walk(路径)生成器;os.listdir(路径),os.path.splitext(名称),os.path.join(路径,名称),os.path.isdir(路径\名称)

    #获取某文件夹下制定类型文件# import os# def filep(fp):# l=[]# a=os.walk(fp) #生成器# for nowp,sonp,oth in a: #当前目录,子 ...

  3. Python os.walk() 遍历出当前目录下的文件夹和文件

    os.walk目录遍历 os.walk的参数如下: os.walk(top, topdown=True, onerror=None, followlinks=False) 其中: - top是要遍历的 ...

  4. Python os.walk() 简介

    Table of Contents 1. os.walk目录遍历 1.1. os.walk 1.2. 例子 1.2.1. 测试topdown 1.2.2. 运行时修改遍历目录 2. 参考资料 os.w ...

  5. 利用 os.walk() 遍历目录

    os.walk: walk(top, topdown=True, onerror=None, followlinks=False) 参数: top 要遍历的目录地址 topdown 为真,则优先遍历t ...

  6. os.walk() 遍历目录下的文件夹和文件

    os.walk(top, topdown=True, onerror=None, followlinks=False) top:顶级目录 os.walk()返回一个三元tupple(dirpath, ...

  7. [py]os.walk爬目录&sys.argv灵活获取参数

    1, 遍历目录 os.walk('/tmp') os.next()   2,sys.argv ######################################## py@lanny:~/t ...

  8. Python 用 os.walk 遍历目录

    今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发现了os.walk方法,就忍不住和大家分享下. 先看下代码: import os for i in os.wa ...

  9. os.walk获取同级目录具有随机性

    1.在不同机器上,相同内容的目录和文件,os.walk获取结果中路径的先后顺序具有随机性. 2.查看os.walk源码得知,listdir具有随机性. 3.修改该源码,对listdir结果排序后,使得 ...

随机推荐

  1. [转] JavaScript 运行机制详解:再谈Event Loop

    一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...

  2. 020 $.each的使用

    在工作中见到这个知识点,不是特别懂,就查了查资料,顺便整理一下 1.定义与用法 each() 方法规定为每个匹配元素规定运行的函数. 提示:返回 false 可用于及早停止循环. 语法 $(selec ...

  3. HDU - 1392 凸包求周长(模板题)【Andrew】

    <题目链接> 题目大意: 给出一些点,让你求出将这些点全部围住需要的多长的绳子. Andrew算法 #include<iostream> #include<cstdio& ...

  4. MXNet 中的 hybird_forward 的一个使用技巧

    from mxnet.gluon import nn from mxnet import nd class SliceLike(nn.HybridBlock): def __init__(self, ...

  5. @Resource 注解的使用

      1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配(这个注解是属业spring的),默认情况 ...

  6. IdentityServer4-端点

    一.发现端点 二.授权端点 三.令牌端点 四.UserInfo端点 五.Introspection端点 六.撤销端点 七.结束会话端点 一.发现端点 发现端点可用于检索有关IdentityServer ...

  7. loj#2054. 「TJOI / HEOI2016」树

    题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...

  8. 4572: [Scoi2016]围棋 轮廓线DP KMP

    国际惯例的题面:这种题目显然DP了,看到M这么小显然要状压.然后就是具体怎么DP的问题.首先我们可以暴力状压上一行状态,然后逐行转移.复杂度n*3^m+3^(m*2),显然过不去. 考虑状态的特殊性, ...

  9. C++使用thread类多线程编程

    转自:C++使用thread类多线程编程 C++11中引入了一个用于多线程操作的thread类,下面进行简单演示如何使用,以及如果进行多线程同步. thread简单示例 #include <io ...

  10. AFN和GCD并行同步问题

    链接: GCD 中组队列group与Afnetworking的结合使用 使用AFNetworking3.0实现接口异步并发 从并发编程到GCD浅述之一----任务.队列.线程复用.AFN3.0同步请求 ...