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访问sqlserver示例
Feb 10 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
python logging日志模块的详解
Oct 29 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
python二进制文件的转译详解
Jul 03 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
Python生成九宫格图片的示例代码
Apr 14 Python
python开发制作好看的时钟效果
May 02 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
js Function类型
2011/12/04 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
Python字符串格式化输出代码实例
2019/11/22 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python如何停止递归
2020/09/09 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
餐饮营销方案
2014/02/23 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
2014年测量员工作总结
2014/12/12 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript