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和shell变量互相传递的几种方法
Nov 20 Python
python自动格式化json文件的方法
Mar 11 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
详解Python if-elif-else知识点
Jun 11 Python
python list转矩阵的实例讲解
Aug 04 Python
Python反射和内置方法重写操作详解
Aug 27 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
python实现简易动态时钟
Nov 19 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
Python嵌入C/C++进行开发详解
Jun 09 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循环输出数据库内容的代码
2008/05/24 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
php实现购物车功能(下)
2016/01/05 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
日期 时间js控件
2009/05/07 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JavaScript中实现sprintf、printf函数
2015/01/27 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
vue实现微信获取用户信息的方法
2019/03/21 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
python对字典进行排序实例
2014/09/25 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
浅析使用Python搭建http服务器
2019/10/27 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
大学生关于奋斗的演讲稿
2014/01/09 职场文书
2014年大学生自我评价
2014/01/19 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
2014年药房工作总结
2014/11/22 职场文书
担保书格式
2015/01/20 职场文书
大学生毕业个人总结
2015/02/15 职场文书
证婚人致辞精选
2015/07/28 职场文书
nginx 添加http_stub_status_module模块
2022/05/25 Servers