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 相关文章推荐
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
python操作CouchDB的方法
Oct 08 Python
Python入门篇之正则表达式
Oct 20 Python
python实现简单socket通信的方法
Apr 19 Python
python对html过滤处理的方法
Oct 21 Python
python 获取图片分辨率的方法
Jan 08 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
Python中super函数用法实例分析
Mar 18 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 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
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
学习2014年全国两会心得体会
2014/03/12 职场文书
高中学生评语大全
2014/04/25 职场文书
小学综合实践活动总结
2014/07/07 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python