根据指定文件名格式,筛选符合条件的文件

import os
import fnmatch
"""根据指定文件名格式,筛选符合条件的文件,把文件的路径加上文件名一起返回"""

def is_file_match(filename, patterns):
    """
    判断符合指定模式的文件名
    :param filename: 文件名
    :param patterns: 文件名模式的列表
    :return: True False
    """
    # print(patterns)
    for pattern in patterns:
        # 遍历指定文件模式
        # print(pattern)
        if fnmatch.fnmatch(filename, pattern):

            # 利用fnmatch方法判断文件名是否符合指定模式
            return True
    return False

def find_specific_files(root, patterns=[‘*‘], exclude_dirs=[]):
    """
    # 查找符合指定文件模式的文件的函数
    :param root: 需要查找文件的路径
    :param patterns: 指定文件名模式列表
    :param exclude_dirs: 不包含路径
    :return:
    """
    for root, list_dirnames, list_filenames in os.walk(root):
        # os.walk方法返回三元组(指定路径名,目录列表,文件列表)
        for filename in list_filenames:
            # 遍历文件列表
            if is_file_match(filename, patterns):
                # 调用文件判断方法
                yield os.path.join(root, filename)
                for d in exclude_dirs:
                    if d in list_dirnames:
                        list_dirnames.remove(d)

if __name__ == ‘__main__‘:
    patterns = [‘*‘]
    # print(is_file_match(‘a.txt‘, patterns))
    ret = find_specific_files(‘.‘, patterns)
    for i in ret:
        print(i)
    #     print(i, ‘---------->‘, os.path.getsize(i))
    # files = {name: os.path.getsize(name) for name in ret}
    # result = sorted(files.items(), key=lambda d: d[1], reverse=True)
    # print(result)
    # for i, j in enumerate(result, 1):
    #     print(i,j[0],j[1])

原文地址:https://www.cnblogs.com/superniao/p/10587810.html

时间: 2024-10-08 06:51:58

根据指定文件名格式,筛选符合条件的文件的相关文章

shell练习-对指定目录下的符合条件的文件执行操作

编写个shell脚本将当前目录下大于10K的文件,然后删除 #!/bin/bash #author: liqilong #date: 2016-08-26 #Decs: find the file (if they more than 10K)and remove them . for Filename in `ls -l|awk '$5 > 10240 {print $9}'` do rm -rf $Filename done echo "OK!"

linux查找符合条件的文件并删除

找到根目录下所有的以test开头的文件并把查找结果当做参数传给rm -rf命令进行删除: 1.find / -name "test*" |xargs rm -rf 2.find / -name "test*" -exec rm -rf {} \; 3.rm -rf $(find / -name "test") 如果想指定递归深度,可以这样: 1.find / -maxdepth 3 -name "*.mp3" |xargs r

qt获取指定目录下符合条件的文件路径

1)设置名称过滤器 QDir * dir = new QDir(路径); QStringList filter; Filter << QStringLiteral(“筛选的文件条件,如.xls...”); dir->setNameFilters(filter); 2)获取指定条件的条目 QList<QFileInfo> *fileInfo = new QList<QFileInfo>(dir->entryInfoList(filter)); for(size

DataTable筛选符合条件的DataRow

得到筛选后的新的DataRow; DataRow[] rows=dt.Select("1=1 and flag <> 1") 清空原DataTable并赋值给新建表 DataTable dtNew=dt.Clone(); 把筛选后的结果添加到新建表中 for(int i=0;i<rows.Length;i++){dtNew.ImportRow(rows[i]);}

如何从List&lt;T&gt;中筛选符合条件的数据的集合或个数

ChannelList就是一个List类型的数据,IsOpen 是其元素的属性 channelCount = (from channel in DevicesManager.Instance.CurrentDevice.ChannelList where channel.IsOpen group channel by channel.ChannelID).Count();

递归删除符合条件的目录,文件, kotlin,java

package a import java.io.IOException import java.nio.file.* import java.nio.file.attribute.BasicFileAttributes fun main(args: Array<String>) { val path = Paths.get("F:\\杨旭升\\dev\\dev_java") remove_recursively(path, 0, { name -> name ==

Java查找指定的(前缀,后缀或中间包含)文件

1 import java.io.File; 2 import java.io.FileNotFoundException; 3 4 public class SearchFile { 5 6 public static void main(String[] args) throws FileNotFoundException { 7 File files = new File("F:/"); //创建File对象,指向F盘根目录 8 String[] names = files.li

PHP preg_replace() 正则替换所有符合条件的字符串

PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素 需要我们用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的. 比如模版引擎解析模版.垃圾敏感信息过滤等等. 一般这种情况,我们用正则按我们的规则去匹配preg_match.替换preg_replace. 但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少. 根据前面说的,两种场景:统计分析,用匹配:

VBA在Excel中的应用(一):改变符合条件单元格的背景颜色

在使用excel处理数据的时候,为了能更清晰的标示出满足特定条件的单元格,对单元格添加背景色是不错的选择.手工处理的方式简单快捷,但是当遇到大批量数据,就会特别的费时费力,而且不讨好(容易出错).通过代码来处理是个不错的选择,excel可以通过VBA编程来处理内部数据,在打开excel页面后,可以通过“alt + F11”组合键来启动VBA编程界面,跟VB的编程界面和语法一样,需要注意的是如何调用excel的内容.VBA通过sheet, range和cells三个层次来调用excel中的制定区域