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发布模块的步骤分享
Feb 21 Python
python3访问sina首页中文的处理方法
Feb 24 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
python reduce 函数使用详解
Dec 05 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
python与caffe改变通道顺序的方法
Aug 04 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
Python创建字典的八种方式
Feb 27 Python
详解torch.Tensor的4种乘法
Sep 03 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
python单元测试之pytest的使用
Jun 07 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 ios推送(代码)
2013/07/01 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
对python调用RPC接口的实例详解
2019/01/03 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
某公司Java工程师面试题笔试题
2016/03/27 面试题
电台实习生求职信
2014/02/25 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
Python实现信息管理系统
2022/06/05 Python