os.walk(top, topdown=True, onerror=None, followlinks=False)遍历目录,topdown=false表示先返回目录,后返回文件

参数说明:

top:表示需要遍历的目录树的路径。

topdown的默认值是“True”,表示首先返回根目录树下的文件,然后遍历目录树下的子目录。值设为False时,则表示先遍历目录树下的子目录,返回子目录下的文件,最后返回根目录下的文件。

例子:可以看出,topdown设值不同,os.walk()返回的列表元素顺序不同(但不是相反),所以遍历后的结果也不同

topdown=False:

#encoding=utf-8
import os
r=os.walk('d:\\test2',topdown=False)
for i in r:
    print i

结果:

D:\>python test.py
('d:\\test2\\dir1', [], [])
('d:\\test2\\dir2\\dir3', [], ['2.txt', '33.bmp'])
('d:\\test2\\dir2', ['dir3'], ['1.txt'])
('d:\\test2', ['dir1', 'dir2'], [])

topdown=True:

import os
r=os.walk('d:\\test2',topdown=True)
for i in r:
    print i

结果:

D:\>python test.py
('d:\\test2', ['dir1', 'dir2'], [])
('d:\\test2\\dir1', [], [])
('d:\\test2\\dir2', ['dir3'], ['1.txt'])
('d:\\test2\\dir2\\dir3', [], ['2.txt', '33.bmp'])

onerror的默认值是“None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。

该函数返回一个列表,列表中的每一个元素都是一个元组,该元组有3个元素,分别表示每次遍历的路径名,目录列表和文件列表。

>>> r=os.walk('d:\\test2',topdown=False)
>>> r
<generator object walk at 0x0000000004C5D480>
>>> list(r)
[('d:\\test2\\dir1', [], []), ('d:\\test2\\dir2\\dir3', [], ['2.txt', '33.bmp']), ('d:\\test2\\dir2', ['dir3'], ['1.txt']), ('d:\\test2', ['dir1', 'dir2'], [])]

默认情况下,os.walk 不会遍历软链接指向的子目录,若有需要请将followlinks设定为true

用root,dirs,files三个变量遍历目录的的目录层级,目录层级的子目录,目录层级下的文件

 for root,dirs,files in os.walk(r'd:\\test2',topdown=False):

root:表示当前遍历到哪一级目录了,目录的名字是谁

dirs:表示root下有哪些子目录

files:表示root下边有几个文件

topdown=False:

代码:

#encoding=utf-8

import os
r=os.walk('d:\\test2',topdown=False)
for i in r:
    print i
print "*"*50
for root,dirs,files in os.walk('d:\\test2',topdown=False):
    print "front folder:",root
    for name in dirs:
        print "folder name:",os.path.join(root,name)
    for name in files:
        print "file name:",os.path.join(root,name)

结果:

topdown=True:

代码:

#encoding=utf-8

import os
r=os.walk('d:\\test2',topdown=True)
for i in r:
    print i
print "*"*50
for root,dirs,files in os.walk('d:\\test2',topdown=True):
    print "front folder:",root
    for name in dirs:
        print "folder name:",os.path.join(root,name)
    for name in files:
        print "file name:",os.path.join(root,name)

结果:

python遍历目录os.walk(''d:\\test2",topdown=False)的更多相关文章

  1. python笔记4-遍历文件夹目录os.walk()

    前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...

  2. Python入门之os.walk()方法

    os.walk方法,主要用来遍历一个目录内各个子目录和子文件. os.walk(top, topdown=True, onerror=None, followlinks=False) 可以得到一个三元 ...

  3. python中的os.walk

    原文出处:https://www.jianshu.com/p/bbad16822eab python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1. ...

  4. 用Python遍历目录

    用Python遍历指定目录下的文件,一般有两种常用方法,但它们都是基于Python的os模块.下面两种方法基于Python2.7,主要用到的函数如下: 1.os.listdir(path):列出目录下 ...

  5. python遍历目录文件脚本的示例

    例子 自己写的一个Python遍历文件脚本,对查到的文件进行特定的处理.没啥技术含量,但是也记录一下吧. 代码如下 复制代码 #!/usr/bin/python# -*- coding: utf-8 ...

  6. Python遍历目录下xlsx文件

    对指定目录下的指定类型文件进行遍历,可对文件名关键字进行条件筛选 返回值为文件地址的列表 import os # 定义一个函数,函数名字为get_all_excel,需要传入一个目录 def get_ ...

  7. Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例

    遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ...

  8. python学习之os.walk()

    os.walk(top,topdown = True,onerror = None,followlinks = False) 参数 top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 ...

  9. Python 遍历目录下的子目录和文件

    import os A: 遍历目录下的子目录和文件 for root,dirs ,files in os.walk(path) root:要访问的路径名 dirs:遍历目录下的子目录 files:遍历 ...

随机推荐

  1. cuda9.0编译caffe报错nvcc fatal : Unsupported gpu architecture 'compute_70'

    Tesla V100 cuda9.0 caffe编译的时候报上述错误,修改方法: CUDA_ARCH := #-gencode arch=compute_20,code=sm_20 \ #-genco ...

  2. oracle中nvarchar2()和varchar2()的区别

    1.NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符. 2.而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个.

  3. cors与jsonp

    在.net中,可以在webApiConfig代码里写,也可以在web.config里配置,但都需要引入System.Web.Cors.这些都是服务器端的配置,对整个项目有效. {若只想对某个请求有效, ...

  4. rpm 安装软件包

    RPM 是RedHat Package Manager (RedHat软件包管理工具)类似windows里面的“添加/删除程序”,rpm执行安装包 RPM执行安装.删除.更新 常用命令组合 -ivh: ...

  5. WordPress禁用插件另类方法不用进后台

    刚刚一小美女说她在WordPress后台启用了一个插件后出现了问题,网站前端和后端都不能打开了,ytkah查看了一下是有个插件api和另一个插件冲突了,但要怎么禁用呢?有两个办法可以解决 1.直接删除 ...

  6. 根据数据库结构生成RzCheckTree

    现在大多数的方法是采用递归,但这种操作会频繁的去select数据库,降低了执行效率,稍微改动一些,效果会好不少,这里介绍一种方法,即一次性select出所有数据,然后按照ParentID排序,逐条添加 ...

  7. NYOJ 最长公共子序列

    # include<iostream> # include<string> # include<stdio.h> using namespace std; ][]; ...

  8. 解决npm ERR! Unexpected end of JSON input while parsing near的方法汇总

    参考链接:https://segmentfault.com/a/1190000015646531

  9. Java内部类详解(一)

    (转自:http://blog.csdn.net/wangpeng047/article/details/12344593) 很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听 ...

  10. Spark算子之aggregateByKey详解

    一.基本介绍 rdd.aggregateByKey(3, seqFunc, combFunc) 其中第一个函数是初始值 3代表每次分完组之后的每个组的初始值. seqFunc代表combine的聚合逻 ...