Python中文件遍历的两种方法


Posted in Python onJune 16, 2014

关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。

方法一:利用os.walk

os.walk可以自顶向下或者自底向上遍历整个文件树,然后返回一个含有3个元素的tuple,(dirpath, dirnames, filenames),要注意的是,os.walk()会返回一个generater,所以调用的时候一定要放到for循环中。

import os
def walk_dir(dirname):
 for root,dirs,files in os.walk(dirname):
  for f in files:
   yield os.path.join(root, f)

方法二:利用os.listdir()

这个方法也比较简单,列出目录然后判断是不是文件夹,不是的话直接返回文件路径,是的话递归调用。

import os
def walk_dir2(dirname):
 for d in os.listdir(dirname):
  path = os.path.join(dirname, d)
  if os.path.isdir(path):
   #note recursive in for...in...
   for f in walk_dir2(path):
    yield f
  else:
   yield path

这里值得一提的是,由于函数中使用了yield,所以会被认为是一个generater,递归调用的时候也需要放到for循环中,否则函数并不会被真正执行。最新的Python 3.3中引入了yield from语法,可以解决上面的问题。
Python 相关文章推荐
Python内置数据类型详解
Aug 18 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
python中list常用操作实例详解
Jun 03 Python
Python中random模块生成随机数详解
Mar 10 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
python实现多张图片拼接成大图
Jan 15 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
在django中form的label和verbose name的区别说明
May 20 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
Python里隐藏的“禅”
Jun 16 #Python
Python程序设计入门(5)类的使用简介
Jun 16 #Python
Python程序设计入门(4)模块和包
Jun 16 #Python
Python程序设计入门(3)数组的使用
Jun 16 #Python
Python程序设计入门(2)变量类型简介
Jun 16 #Python
Python程序设计入门(1)基本语法简介
Jun 13 #Python
Python对两个有序列表进行合并和排序的例子
Jun 13 #Python
You might like
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
python中assert用法实例分析
2015/04/30 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
python 异步async库的使用说明
2020/05/04 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
国贸专业的职业规划书
2014/03/15 职场文书
教师一岗双责责任书
2014/04/16 职场文书
农业项目建议书
2014/08/25 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
如何写辞职书
2015/02/26 职场文书
倡议书的格式写法
2015/04/28 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers
python lambda 表达式形式分析
2022/04/03 Python