os.walk() 用于遍历目录里的文件,或者说迭代目录里的文件 ??? 什么意思?比如 Linux 中 find /data -type f 表示找出 /data 目录下的所有文件,它会先找出 /data 目录下的文件,如果 /data 目录下还有子目录,再继续往下从子目录中找出文件,如果子目录下还有子目录,再继续往下找,...... ,最终找出所有的文件,这就叫做遍历/迭代目录里的文件

os.walk() 语法:

walk(top, topdown=True, onerror=None, followlinks=False)

top :指定我们要遍历哪个目录,这个目录称为 top ( 顶级 ) 目录
topdown :可选参数,如果为True,则优先遍历 top 目录,如果为False,则优先遍历 top 目录下的子目录,默认是True
onerror :可选参数,默认为None,表示当我们遍历目录里的文件时,如果遍历出错,忽略并继续遍历;如果不为空,则需要提供一个自定义函数来提示出现错误后,要继续遍历,还是抛出异常中止遍历
followlinks :可选参数,如果为True,则会遍历目录的软链接指向的实际目录,如果为 False 则不会

os.walk() 用法如下:

[root@localhost ~]$ tree /data
/data
|-- 1.txt
|-- 2.txt
|-- tmp1
| |-- 1.txt
| `-- 2.txt
`-- tmp2
|-- 1.txt
`-- 2.txt
In [1]: import os

In [2]: for p, d, f in os.walk('/data'):      # os.walk()会返回一个三元组,分别是 dirpath, dirnames, filenames,这里我们用 p, d, f 来接收
...: print p, d, f # dirpath 表示 top 目录,dirnames 表示 top 目录下的子目录(不包括该子目录下的子目录),filenames 表示该子目录下的所有文件(不包括改子目录下的子目录的文件)
...:
/data ['tmp1', 'tmp2'] ['2.txt', '1.txt'] # /data 表示 top 目录,['tmp1', 'tmp2'] 表示 /data 下的子目录,['2.txt', '1.txt'] 表示子目录下的文件。然后继续遍历 - - - ╮
/data/tmp1 [] ['2.txt', '1.txt'] < - - - ╯
/data/tmp2 [] ['2.txt', '1.txt']

通常,我们会用 os.walk() 找出指定目录下的所有文件:

In [1]: import os

In [2]: for p, d, f in os.walk('/data'):
...: for i in f:
...: print os.path.join(p, i)
...:
/data/2.txt
/data/1.txt
/data/tmp1/2.txt
/data/tmp1/1.txt
/data/tmp2/2.txt
/data/tmp2/1.txt

Python 对目录做遍历的更多相关文章

  1. Python 中当前位置以及目录文件遍历操作

    Python 中当前位置以及目录文件遍历操作 当前位置 print(os.path.dirname(__file__)) 其中 dirname 会选择目录(文件夹),"__file__&qu ...

  2. python GUI编程tkinter示例之目录树遍历工具

    摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用 ...

  3. python开发目录合并小工具 PathMerge

    前言 这个程序陆陆续续开发了几天,正好我在学Python,就一边做一边学,倒是学到不少东西. 不得不说python是快速开发的好工具. 程序做了一些改进,这两天又忙着毕设,现在才想起来发到博客上.想想 ...

  4. Python os.walk文件遍历用法【转】

    python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os ...

  5. python 查看目录下所有目录和文件

    python查看目录下所有的子目录和子文件 python递归遍历目录结构 我喜欢第一种 方法1 import json, os def list_dir(path, res): for i in os ...

  6. WEB安全第二篇--用文件搞定服务器:任意文件上传、文件包含与任意目录文件遍历

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  7. 如和用python给女朋友做个专属她的软件

    如和用python给女朋友做个专属她的软件 在学习python的路上如果觉得枯燥就可以想我一样做一些有趣的事情就不会无聊了 python是一门及其有趣的语言. 人们都喜欢记住一些重要的日子,比如说跟女 ...

  8. Python中setuptools做什么用的?

    概括 setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的增强工具(适用于 Pyt ...

  9. python模块目录文件后续

    1,新增PythonModule加载path Ruiy tip(关于python list[]数据库类型特殊你懂的!append(""),extend([""] ...

随机推荐

  1. 转载: 8个月从CS菜鸟到拿到Google Offer的经历+内推

    8个月从CS菜鸟到拿到Google Offer的经历+内推 http://blog.csdn.net/fightforyourdream/article/details/17094127 http:/ ...

  2. tomcat 启动 报错Neither the JAVA_HOME nor the JRE_HOME environment variable is definedtemp

    catalina.sh 加入环境 export JAVA_HOME=/usr/local/jdk1.7.0_79 export CATALINA_HOME=/home/sa/webserver/tom ...

  3. Spring中@Resource与@Autowired

    问题 这其实就是@Autoware与@Resource没有正确的使用,这个错误是因为wmPoiOplogService这个变量装配方式是@Resource,按照@Resource的按名字查找的方式,并 ...

  4. C语言 · 最大子阵

    历届试题 最大子阵   时间限制:1.0s   内存限制:256.0MB      问题描述 给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大. 其中,A的子矩阵指在A中行和 ...

  5. java依赖的外部文件路径的获取

    在开发阶段一直使用以下方式调试没有问题: String path = KStream104.class.getResource("/").getFile().toString(); ...

  6. C++中static_cast, dynamic_cast使用方法

    前言 Android的Framework层源代码中有非常多强制类型转换函数的调用.写惯了C代码的人一般都习惯以下这样的强制转换方式: double a = 89; int b = (int)a; 可是 ...

  7. DataTable使用技巧:DataRowState

    DataGridView:获取 DataRow 对象的状态,共有5个枚举值. Added 该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用. Deleted ...

  8. PHP无限极分类 - 3 - 分类目录

    结合zui---Tree组件,实现分类目录. 目录结构同上一篇: 效果: 代码: <!DOCTYPE html> <html lang="en"> < ...

  9. 试验如何通过审核Google AdSense——我跟谷歌ads杠上啦

    http://www.hankcs.com/appos/webhost/apply-google-ads.html —————————————————————————————————————————— ...

  10. 等待事件 wait event

    衡量数据库状况, 优化数据库等 当一个进程连接到数据库后, 进程所经历的种种等待就开始被记录, 并且通过一系列的性能视图进行展示, 通过等待事件用户可以很快发现数据库的性能瓶颈, 从而进行针对性能的优 ...