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的一些用法分享
Oct 07 Python
python比较两个列表是否相等的方法
Jul 28 Python
python基础教程之Filter使用方法
Jan 17 Python
Python快速排序算法实例分析
Nov 29 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
python2和python3在处理字符串上的区别详解
May 29 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 Python
python中xlrd模块的使用详解
Feb 01 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
php中Smarty模板初体验
2011/08/08 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
python调用fortran模块
2016/04/08 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Python中property函数用法实例分析
2018/06/04 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
python仿抖音表白神器
2019/04/08 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
python绘制分布折线图的示例
2020/09/24 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
三行辞职书范文
2015/02/26 职场文书
实用求职信模板范文
2019/05/13 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang