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的Django框架中加载模版的方法
Jul 16 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
pytorch索引查找 index_select的例子
Aug 18 Python
python的faker库用法
Nov 28 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
详解Python IO口多路复用
Jun 17 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
Elasticsearch 索引操作和增删改查
Apr 19 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
python中使用enumerate函数遍历元素实例
2014/06/16 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
python获取array中指定元素的示例
2019/11/26 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
C#面试题问题集
2016/04/02 面试题
元旦晚会邀请函
2014/01/27 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
医学专业大学生求职信
2014/07/12 职场文书
红歌会主持词
2015/07/02 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书