目录生成器 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. jquery中方法扩展 ($.fn & $.extend) 学习笔记

    A.$.fn 1.$.fn.method() 函数为jQuery对象扩展一个属性和方法(主要用于扩展方法) :method 为自定义方法名 ($.fn 等效 $.prototype) $.fn.bor ...

  2. drupal笔记

    $app_root :网站根目录 安装 汉化:1将汉化包放置drupal8\sites\default\files\translations下安装:2极简版的话需要在extend(扩展)中安装Inte ...

  3. JS高级-原型等概念深入理解

    一 数据类型: 基本(值)数据类型: string number undefined null boolean 对象(引用)类型 [ 查找对象的属性时,会查找原型链 设置属性时,一般在构造函数里面设置 ...

  4. abstract class和interface有什么区别?

    含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必 ...

  5. linux golang开发环境配置(离线方式)

    <获取开发工具>     到https://www.golangtc.com/download 下载安装包, 根据自己的系统选择合适的开发包,这里选择go.1.9.2.linux-amd6 ...

  6. windows安全配置

    比较重要的 1. 更改默认administrator用户名,密码复杂些 2. 开启防火墙(设置入站规则,入站出站默认全部阻止) 3. 杀毒软件 4. 删除默认共享(net share C$ /del) ...

  7. 项目冲刺 Seventh

    Seventh Sprint 1.各个成员今日完成的任务 蔡振翼:编写博客 谢孟轩:消息功能的实现,各页面与功能的调试优化 林凯:优化注册判断逻辑,整合相关代码 肖志豪:帮助组员 吴文清:完成管理员信 ...

  8. AGC027 E - ABBreviate

    目录 题目链接 题解 代码 题目链接 AGC027 E - ABBreviate 题解 神仙啊 建议查看https://img.atcoder.jp/agc027/editorial.pdf 定义a ...

  9. BZOJ.4241.历史研究(回滚莫队 分块)

    题目链接 \(Description\) 长度为n的数列,m次询问,每次询问一段区间最大的 \(A_i*tm_i\) (重要度*出现次数) \(Solution\) 好像可以用莫队做,但是取max的操 ...

  10. Struts2标签里面调用java方法

    <s:if test="#session.user.hasPrivilegeByName(name)"> hasPrivilegeByName(name) 为User类 ...