Python遍历目录中的所有文件的方法

Python遍历目录中的所有文件的方法,第1张

概述os.walk生成器os.walk(PATH),PATH是个文件夹路径,当然可以用.或者../这样啦.返回的是个三元元组为元素的列表,每个元素代表了一个文件夹下的内容.第一个就是当前文件夹下内容.

os.walk生成器
os.walk(PATH),PATH是个文件夹路径,当然可以用.或者../这样啦.
返回的是个三元元组为元素的列表,每个元素代表了一个文件夹下的内容.第一个就是当前文件夹下内容.
返回的三元元组代表(该工作文件夹,该文件夹下的文件夹的列表,该文件夹下文件的列表).
所以,
获得所有子文件夹,就是(d代表这三元元组):

os.path.join(d[0],d[1]);

获得所有子文件,就是:

 os.path.join(d[0],d[2]);

以下例子使用了两套循环,遍历后得到所有文件名的List后再循环所有文件:

result = [os.path.join(dp,f) for dp,dn,fs in os.walk("_pages") for f in fs if os.path.splitext(f)[1] == '.HTML']for fname in result: #do something

实际等于

result=[]for dp,fs in os.walk("_pages"): for f in fs: if (os.path.splitext(f)[1] == '.HTML'):  result.append(os.path.join(dp,f))for fname in result: #do something

最后判断是否HTML后缀获得文件名,还可以使用glob:

result = [y for x in os.walk(PATH) for y in glob.glob(os.path.join(x[0],'*.txt'))]

还可以使用迭代器方法:

from itertools import chainimport globresult = (chain.from_iterable(glob.iglob(os.path.join(x[0],'*.txt')) for x in os.walk('.')))

进阶
标准文件数遍历生成器os.walk既强大又灵活,不过os.walk还缺乏应用程序需要的一些细节上的处理能力,例如根据某种模式选择文件,对所有文件(或目录)进行排序,或只遍历当前目录不进入其子目录,因此需要对接口对应进行封装。

import os,fnmatch  def filter_files(dirname,patterns='*',single_level=False,yIEld_folders=False):   patterns = patterns.split(';')   allfiles = []   for rootdir,subdirname,files in os.walk(dirname):     print subdirname     allfiles.extend(files)     if yIEld_folders:       allfiles.extend(dubdirname)     if single_level:       break   allfiles.sort()   for eachpattern in patterns:     for eachfile in fnmatch.filter(allfiles,eachpattern):         print os.path.normpath(eachfile) 

说明:
1.extend与append的区别
列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以 *** 作。  列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。 append() 方法向列表的尾部添加一个新的元素。只接受一个参数,extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
2. fnmatch模块
fnmatch 模块使用模式来匹配文件名。模式语法和 Unix shell 中所使用的相同. 星号(*) 匹配零个或更多个字符,问号(?) 匹配单个字符。你也可以使用方括号来指定字符范围,例如 [0-9] 代表一个数字,其他所有字符都匹配它们本身。
1) fnmatch.fnmatch(name,pattern)方法:测试name是否匹配pattern,返回true/false
2) fnmatch.filter(names,pat)实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表,当然names表示的是列表

总结

以上是内存溢出为你收集整理的Python遍历目录中的所有文件的方法全部内容,希望文章能够帮你解决Python遍历目录中的所有文件的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1203808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存