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程序员
Jun 12 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
Python 如何实现访问者模式
Jul 28 Python
python excel多行合并的方法
Dec 09 Python
浅析Python打包时包含静态文件处理方法
Jan 15 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程序
2006/10/09 PHP
PHP 数组遍历顺序理解
2009/09/09 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python切片索引用法示例
2018/05/15 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
python装饰器的特性原理详解
2019/12/25 Python
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
电子银行营销方案
2014/02/22 职场文书
农村党员干部承诺书
2015/05/04 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers