目录生成器 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. python全栈开发day20-类的三大特性继承、多态、封装

    1 继承 1.怎么继承,父类和子类 class 类名(父类):pass 除了__init__下对象属性不能自动继承外,其他的类属性和动态方法,子类对象都可以访问到. 2.子类对象查找属性的顺序,对象现 ...

  2. 51Nod 算法马拉松28 A题 先序遍历与后序遍历 分治

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 51Nod1832 题意概括 对于给定的一个二叉树的先序遍历和后序遍历,输出有多少种满足条件的二叉树. 两棵二 ...

  3. 017 SpringMVC中CRUD实例

    一:新建项目(下面的几乎属于公共的方法,不需要改动) 1.结构 2.添加lib 3.配置web.xml <?xml version="1.0" encoding=" ...

  4. 047 大数据下的java client连接JDBC

    1.前提 启动hiveserver2服务 url,username,password. 2.官网 3.程序 4.结果 emp的第一列与第二列 5.源程序 package com.cj.it.hiveU ...

  5. How to cast List<Object> to List<MyClass> Object集合转换成实体集合

    List<Object> list = getList(); return (List<Customer>) list; Compiler says: cannot cast  ...

  6. python爬虫学习(一):BeautifulSoup库基础及一般元素提取方法

    最近在看爬虫相关的东西,一方面是兴趣,另一方面也是借学习爬虫练习python的使用,推荐一个很好的入门教程:中国大学MOOC的<python网络爬虫与信息提取>,是由北京理工的副教授嵩天老 ...

  7. HDU-1421 搬寝室【dp】

    题目链接:https://vjudge.net/contest/214662#problem/E 题目大意:                                               ...

  8. Spring Boot 项目实战(三)集成 Swagger 及 JavaMelody

    一.前言 上篇介绍了 Logback 的集成过程,总体已经达到了基本可用的项目结构.本篇主要介绍两个常用工具,接口文档工具 Swagger .项目监控工具 JavaMelody 的集成步骤. 二.Sw ...

  9. 网络爬虫之scrapy爬取某招聘网手机APP发布信息

    1 引言 过段时间要开始找新工作了,爬取一些岗位信息来分析一下吧.目前主流的招聘网站包括前程无忧.智联.BOSS直聘.拉勾等等.有段时间时间没爬取手机APP了,这次写一个爬虫爬取前程无忧手机APP岗位 ...

  10. java中的synchronized : 模拟取款

    1.定义账户类: public class Account { private int balance = 500; public int getBalance() { return balance; ...