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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
python3实现短网址和数字相互转换的方法
Apr 28 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
Python网络编程详解
Oct 31 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
对pandas中to_dict的用法详解
Jun 05 Python
python实现图片批量压缩程序
Jul 23 Python
python发送告警邮件脚本
Sep 17 Python
python滑块验证码的破解实现
Nov 10 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
TensorFlow的环境配置与安装方法
Feb 20 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
给Function做的OOP扩展
2009/05/07 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
Vue开发环境跨域访问问题
2020/01/22 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
基于Numba提高python运行效率过程解析
2020/03/02 Python
python 追踪except信息方式
2020/04/25 Python
Python reques接口测试框架实现代码
2020/07/28 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
印度网上药店:1mg
2017/10/13 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
一篇.NET面试题
2014/09/29 面试题
在职人员函授期间自我评价分享
2013/11/08 职场文书
小学生检讨书大全
2014/02/06 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年大学团支部工作总结
2014/12/02 职场文书
任命书格式模板
2015/09/22 职场文书
乔迁新居祝福语
2019/11/04 职场文书