python 之遍历目录树(可匹配输出特定后缀的文件)

  涉及到的模块有os, fnmatch:1、通过os模块中的方法获取dir、subdir、files,通过os.path.join可拼接成完整路径;

                2、fnmatch主要通过fnmatch.fnmatch(name, patterns),在patterns中匹配name元素,用于获取特定后缀的文件。

  可将这一功能代码封装,以便后续调用:

  

 1 #!/usr/bin/env python
 2 import os, fnmatch
 3
 4 def all_files(root, patterns=‘*‘, single_level=False, yield_folders=False):
 5     #将模式从字符串中取出放入列表中
 6     patterns = patterns.split(‘;‘) #可以指定多个后缀作为需要获取的文件类型,通过‘;‘作为分隔符
 7     for path, subdir, files in os.walk(root):
 8         if yield_folders :
 9             files.extend(subdir)
10         files.sort()
11         for name in files:
12             for pattern in patterns:
13                 if fnmatch.fnmatch(name, patterns):
14                     yield os.path.join(path, name)
15                     break
16     if single_level:
17         break:

为了验证最终结果,(注意,最终结果是可迭代的),所以本人具体实例验证如下:

  

1 for path in all_files(‘/usr/local/test‘, pattern=‘*.py‘):
2     print path

  

  与大家共勉!

时间: 2024-11-10 13:29:47

python 之遍历目录树(可匹配输出特定后缀的文件)的相关文章

Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a" def gci (path): parents = os.listdir(path) for parent in parents: child = os.path.join(path,parent) #print(child) if os.path.isdir(child): gci(child) # print(child) else: print(child) gci(path) #使用os.walk方

可编译为 UNICODE 和 ANSI 版本的遍历目录树程序_0.1

路径暂时是写死的 编译两个版本的程序: g++  treeT.cpp -municode -D_UNICODE -o treeT_UNIg++  treeT.cpp -o treeT_ASC 为了观察ANSI版在遍历文件夹如果遇到Unicode字符会发生什么情况而写来作对比的 他们都可以接收终端传送的中文字符 ANSI版: opendir/readdir 遍历目录遇到 UNICODE字符的时候会出问题 UNICODE版: 输出到stdout的时候,值>128 的UNICODE字符丢失 改为 Wr

[转载]Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a"def gci (path):"""this is a statement"""parents = os.listdir(path)for parent in parents:child = os.path.join(path,parent)#print(child)if os.path.isdir(child):gci(child)# print(

遍历目录树返回字典树,目录字典

def getDirectoryTree(self,folder): ''' :param folder:文件目录 :return:目录的字典 ''' dirtree={'children':[]} if os.path.isfile(folder): return {'text':os.path.basename(folder),'icon':'glyphicon glyphicon-leaf'} else: basename=os.path.basename(folder) dirtree[

Python,遍历目录下TXT

import os #获取根目录,递归得到所以txt文件的路径 list_dirs = os.walk(os.curdir) txtfilenames=[] for root, dirs, files in list_dirs: # for d in dirs: # print os.path.join(root, d) filenames=filter(lambda filename:filename[-4:]=='.txt',filenames) filenames=map(lambda f

用Python删除本地目录下某一时间点之前创建的文件

参考http://www.cnblogs.com/iderek/p/8035757.html os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os.curdir:返回当前目录('.') os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false os.path.isfile(name):判断name是不是一个文件,不存在n

利用python copy目录下所有特定后缀的文件

python 太好用了 这一次我想将子目录先所有jpg和pdf文件都copy出来放到一个文件夹,在网上找了个copy全部文件的代码修改一下就搞定了 import os import shutil source_path = os.path.abspath(r'F:\tool\') target_path = os.path.abspath(r'D:\putout') if not os.path.exists(target_path): os.makedirs(target_path) if o

shell 遍历目录 批量解压文件名含有某字符串及特定后缀的文件

#!/bin/sh mkdir  /home/zhengyk/Desktop/tmp  #创建临时文件夹,用来存放解压后的文件 #mkdir  /home/zhengyk/Desktop/local  #创建临时文件夹,用来存放过滤结果 list_alldir(){    for file in $1/* do if [ -d $file ]; then list_alldir $file else filename=${file##*/}  # 从路径中取出文件名及后缀 echo "$file

java利用SuffixFileFilter统计目录下特定后缀名文件的数目

/** * 文件处理类 * @author zhangcd * @date 2017年1月3日 */ public class FileUtil { /** * 得到所有后缀的数目 * * @param directory 目录 * @param suffixFilter 后缀 * @param pageCount 返回结果集限制 * @return list 集合 * @throws ArchiveException */ public static int getSuffixFilesNum