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之再深点,更懂list
Sep 20 Python
python多进程实现进程间通信实例
Nov 24 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
django foreignkey(外键)的实现
Jul 29 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
tensorboard显示空白的解决
Feb 15 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
Python发送邮件实现基础解析
Aug 14 Python
Python jieba结巴分词原理及用法解析
Nov 05 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基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python常用函数详解
2016/09/13 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
中学生学习保证书
2015/02/26 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
7个你应该知道的JS原生错误类型
2021/04/29 Javascript