Python查找文件

1. 利用字符串的前缀和后缀匹配查找文件#

  • str.startswith()
  • star.endswith()

 

2.使用fnmatch#

  • fnmatch              判断文件名是否符合特定模式
  • fnmatchchcase    判断文件名是否符合特定模式,不区分大小写
  • filter                返回输入列表中,符合特定模式的文件名列表
  • translate            将通配符模式换成正则表达式

fnmatch支持的通配符如下:

  • *                   匹配任何数量的字符
  • ?                  匹配单个字符
  • [seq]           匹配seq中的字符
  • [!seq]          匹配出seq以外的字符
fnmatch 

filter

  filter每次对一组文件名进行匹配,而不是单个,它需要传入文件名列表作为第一个参数

 3. 使用glob#

glob是标准库

4. 使用os.walk遍历目录树#

   walk函数会遍历当前目录及其子目录,并且对于没一个目录,返回一个三元组(dirpath,dirnames,filenames),

dirpath是当前目录,dirnames是当前目录下的所有子目录,filenames是当前目录下的所有文件。

案列:查找目录及其子目录中的的图像文件

 

综合案列:#

一个通用的查询文件的python脚本

fnmatch_file.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
# coding=utf-8
import os
import fnmatch
 
 
def is_file_match(filename, patterns):
    for pattern in patterns:
        if fnmatch.fnmatch(filename, pattern):
            return True
    return False
 
 
def find_specific_files(root, patterns=['*'], exclude_dirs=[]):
    for root, dirnames, filenames in os.walk(root):
        for filename in filenames:
            if is_file_match(filename, patterns):
                if filename in filenames:
                    yield os.path.join(root, filename)
 
        for d in exclude_dirs:
            if d in dirnames:
                dirnames.remove(d)

  1. 查找目录下的所有文件

     2.查找所有图片

   3. 除开test2以外的所有图片

     4. 查找目录及子目录下最大的十个文件

 

posted @   头痛不头痛  阅读(581)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩