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兔子毒药问题实例分析
Mar 05 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
python 打印出所有的对象/模块的属性(实例代码)
Sep 11 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
jenkins+python自动化测试持续集成教程
May 12 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
Pytorch之扩充tensor的操作
Mar 04 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 Python
python3操作redis实现List列表实例
Aug 04 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
基于mysql的bbs设计(五)
2006/10/09 PHP
php数字游戏 计算24算法
2012/06/10 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
主题酒店策划书
2014/01/28 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang