Python中文件遍历的两种方法_python

关于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语法,可以解决上面的问题。

时间: 2024-11-05 17:32:07

Python中文件遍历的两种方法_python的相关文章

在Python中调用ggplot的三种方法_python

本文提供了三种不同的方式在Python(IPython Notebook)中调用ggplot. 在大数据时代,数据可视化是一个非常热门的话题.各个BI的厂商无不在数据可视化领域里投入大量的精力.Tableau凭借其强大的数据可视化的功能成为硅谷炙手可热的上市公司.Tableau的数据可视化的产品,其理论基础其实是<The Grammar of Graphic>,该书提出了对信息可视化的图表的语法抽象体系,数据的探索和分析可以由图像的语法来驱动,而非有固定的图表类型来驱动,使得数据的探索过程变得

在PowerPoint中插入视频的两种方法

     为追求更完美效果,在Powerpoint中通过shockwave Flash Object控件插入SWF格式动画已是家常便饭.但很多情况下,演示文档还需要视频做辅助,下面我们介绍在PowerPoint 2007中插入视频的两种方法.   直接插入法        这是最简单方法.用该法插入的视频,在演示界面中仅显示视频画面,和插入图片十分类似.可以说,这是一种无缝插入,效果相当不错,但同时局限性也很大.首 先,该法仅支持插入AVI.MPEG和WMV等Windows Media格式视频,

python实现中文输出的两种方法

  这篇文章主要介绍了python实现中文输出的两种方法,实例分析了Python操作中文输出的技巧,需要的朋友可以参考下 方法一: 用encode和decode 如: ? 1 2 3 4 5 6 7 8 9 10 11 import os.path import xlrd,sys Filename='/home/tom/Desktop/1234.xls' if not os.path.isfile(Filename): raise NameError,"%s is not a valid fil

js删除Array数组中指定元素的两种方法_javascript技巧

本节内容: js删除Array数组中指定元素 方法一, /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=

Ajax中解析Json的两种方法对比分析

  这里给大家介绍的是Ajax中解析Json的两种方法对比分析,十分的实用,本文为学习笔记,属新手文章,欢迎指教! eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: ? 1 2 3 4 5 var jsonDate = '{ "name":"周星驰","age":23 }'   var jsonObj = eval( '(' + jsonDate + ')' );

ZBrush中绘制纹理的两种方法

  利用ZBrush的内置插件"投影大师"和"Polypainting"纹理贴图能够快速实现纹理的绘制.本文将对这两种方法的应用流程做一个介绍. 在ZBrush中绘制纹理的两种方法: Projection Master(投影大师):这是基于投影的基本纹理系统.用户将他们的模型"投下"到画布接着绘制,最后从画布拾取. Projection Master(投影大师)的概念是比较简单的.当开始3D模型工作时,你激活Projection Master,这

Excel单元格中数据自动换行的两种方法

Excel单元格中数据自动换行的两种方法   不管单元格中是已经有了数据,或者还等待输入数据,都可以对它执行自动换行命令.自动换行的方法有两种,现在就来对下面表格中已经超出单元格宽度的数据使用自动换行. Excel单元格中数据自动换行的方法一 选择要换行的单元格(可以是一个,也可以是多个),然后切换到"开始"选项卡,单击"对齐方式"组中的"自动换行"命令. Excel单元格中数据自动换行的方法二 1.选中要换行的单元格,单击鼠标右键,在弹出的菜单

WPS2013文字中拆分窗口的两种方法

  WPS2013文字中拆分窗口的两种方法          在WPS2013中存在两种方法可以对窗口进行分屏操作,下面就详细的介绍一下如何操作. 1.第一种方法:通过在同一个窗口中新建窗口来实现的,首先点击"视图"下的"新建窗口",然后点击"重排窗口",在下拉选项中包括水平平铺.垂直平铺和层叠三种格式,可以根据自己的需要进行选择. 2.第二种方法:在最新版本的WPS2013文字中,在"视图"菜单下直接由"拆分窗口&

PHP删除数组中特定元素的两种方法

这篇文章介绍了PHP中删除数组中特定元素的两种方法,有需要的朋友可以参考一下   方法一: 复制代码 代码如下: <?php $arr1 = array(1,3, 5,7,8); $key = array_search(3, $arr1); if ($key !== false)     array_splice($arr1, $key, 1); var_dump($arr1); ?> 输出: array(4) { [0]=> int(1) [1]=> int(5) [2]=>