Python文件遍历二种方法
分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现。
关于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()
这个方法也比较简单,列出目录然后判断是不是文件夹,不是的话直接返回文件路径,(脚本学堂 www.jbxue.com)是的话递归调用。
- 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-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)
一.模块的循环导入问题 run.py # import m1 # 第一次导入 m1.py # 错误示范 ''' print('正在导入m1') from m2 import y #第一次导入m2 x= ...
- python自动化之上传文件的3种方法和图片预览
ajax上传文件的三种方法 第一种xhr提交 function xhrSubmit(){ // $('#fafafa')[0] var file_obj = document.getElementBy ...
- MySQL命令执行sql文件的两种方法
MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...
- XML解析的二种方法之dom解析
XML解析的二种方法:dom解析和sax解析 文件大小 存储位置 读取速度 dom解析 小文件 放在内存中 快 sax解析 ...
- 打开cad文件的几种方法
转自原文 打开cad文件的几种方法 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeature ...
- 模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途
目录 模块的四种形式 模块 模块的四种形式 import和from...import 循环导入问题 模拟问题的发生: 解决方案 模块的搜索路径 Python文件的两种用途 模块的四种形式 Nike推荐 ...
- IIS7.5使用web.config设置伪静态的二种方法
转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
- .net(C#)操作文件的几种方法汇总
.net(C#)操作文件的几种方法汇总 System.IO命名空间下类的用法:在System.IO名称空间中包含了用于文件输入输出的主要类.File:实用类,提供许多静态方法,用于移动.复制和删除文件 ...
随机推荐
- VM虚拟机如何和主机共享文件夹或文件
请一定要选中Map as a network drive in Windows guests,否则将无法查看共享.
- JavsScript 之 求时间差
var dateStart = new Date(); //开始时间var dateEnd = new Date(); //结束时间 var timePeriod = dateEnd.getTime( ...
- linux下apache的使用
Linux安装配置apache http://www.cnblogs.com/fly1988happy/archive/2011/12/14/2288064.html 1.获取软件: http://h ...
- HDU1698:Just a Hook(线段树区间更新)
Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for m ...
- 亲自己主动手从源代码 构建 Groovy 2.3.8 公布包
今天为了学习 怎样使用 Groovy 写 Groovy 的測试代码, 所以到 http://groovy.codehaus.org/Download 下载了 Groovy 2.3.8 的源码包. Gr ...
- photoshop 切片工具进行切图
1.使用切片工具切图 2.存储为web所用格式 3.选择图片格式 4.只保存切片(选择所有用户切片) 5.查看:
- win7官方下载地址
win7官方下载地址 http://microsoftstore.me/category/microsoft/windows/
- Java之异常机制(1) - 高效处理异常
Java开发人员做出的有关架构的最重要的决定之一便是如何使用Java异常模型.Java异常处理成为社区中讨论最多的话题之一.一些人认为Java语 言中的已检查异常(Checked Exceptions ...
- jquery获取td所在的行和列
今天在做项目时.遇到一个须要获取第几行第几列的问题. 后来.网上找了找资料,整理了此文.(使用jquery的preAll()获取列) 代码例如以下: <!DOCTYPE html PUBLIC ...
- eclipse A Java Runtime Environment(JRE)
eclipse A Java Runtime Environment(JRE) CreateTime--2018年5月13日18点17分 Author:Marydon 1.问题描述 2.问题解析 ...