当前位置: 首页 > news >正文

glob 用法技巧

目录

处理大量文件节省内存

匹配多个文件扩展名

遍历多种格式文件

遍历某一个文件:

查找当前目录和子目录

6. 排除特定文件

7. 大小写不敏感匹配

8. 获取绝对路径

9. 处理特殊字符


处理大量文件节省内存


技巧:用 iglob 替代 glob,逐项生成路径,节省内存。

for file in glob.iglob("**/*.csv", recursive=True):
    process(file)  # 逐项处理大文件列表

匹配多个文件扩展名

技巧:使用 {} 匹配多个模式,或用列表推导式合并结果。

# 方法1:使用 {} 匹配多个扩展名
files = glob.glob("*.{jpg,png}", recursive=True)

# 方法2:合并多个 glob 结果
files = [f for ext in ["*.jpg", "*.png"] for f in glob.glob(ext)]

遍历多种格式文件

import glob
import os

import time
if __name__ == '__main__':

    base_dir='F:\project\lx_code\dance\pic_mp4\images_for_recon\img_1x1'

    imgs=glob.glob(os.path.join(base_dir,'*.png'))+glob.glob(os.path.join(base_dir,'*.jpg'))+glob.glob(os.path.join(base_dir,'*.jpeg'))

遍历某一个文件:

from glob import glob

for video_path in glob("/shared_disk/users/lbg/project/inpaint/see3d/mp4s/person_big_0108.mp4"):

查找当前目录和子目录

# 查找当前目录及其子目录下所有的 .py 文件
py_files_recursive = glob.glob('**/*.py', recursive=True)
for file in py_files_recursive:
    print(file)

6. 排除特定文件

技巧:用列表推导式过滤不需要的文件。

all_files = glob.glob("*.txt")
filtered = [f for f in all_files if "temp" not in f]

7. 大小写不敏感匹配

技巧:自定义函数将模式和路径转为小写(适用于非大小写敏感系统)。

def case_insensitive_glob(pattern):
    return glob.glob(
        pattern, 
        recursive=recursive
    )

files = case_insensitive_glob("*.JPG")  # 匹配 .jpg 和 .JPG

8. 获取绝对路径

技巧:结合 os.path.abspath 或直接匹配绝对路径。

import os

# 将相对路径转为绝对路径
abs_files = [os.path.abspath(f) for f in glob.glob("*.py")]

# 直接匹配绝对路径
abs_files = glob.glob("/home/user/docs/*.pdf")

9. 处理特殊字符

技巧:用 glob.escape 转义路径中的特殊字符(如 *?)。

escaped_path = glob.escape("file[1].txt")
files = glob.glob(f"{escaped_path}")  # 精确匹配 file[1].txt

相关文章:

  • 撕碎QT面具(4):horizontal Layout修改各个控件的比例大小
  • 【Golang 面试题】每日 3 题(五十九)
  • 以deepseek为例的AI学习及公司知识库的搭建
  • Golang 相关的github 开源项目
  • 便捷批量字符一键查找替换工具
  • 首页 layout 架子(element-plus菜单组件)
  • 解锁机器学习核心算法 | 逻辑回归:不是回归的“回归”
  • 通过API 调用本地部署 deepseek-r1 模型
  • 关系中出现这10个信号,离分手就不远了(爱情友情都适用)
  • idea连接gitee后.反向创建仓库和分支
  • 前端基础入门:HTML、CSS 和 JavaScript
  • 【股票数据API接口28】如何获取强势股池数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • Scrapy:DownloaderAwarePriorityQueue队列设计详解
  • 企业软件合规性管理:构建高效、安全的软件资产生态
  • docker知识
  • 网工项目实践2.8 IPv6设计及网络优化需求分析及方案制定
  • 2025.2.20总结
  • 分布式架构与XXL-JOB
  • Redis常用命令合集【二】
  • 【Axure高保真原型】嵌套表格
  • 刘永明|在从普及到提高中发展新大众文艺
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • 哈尔滨工业大学原副校长王魁业逝世,享年92岁
  • 母亲节|写给妈妈
  • 工程院院士葛世荣获聘任为江西理工大学校长
  • 中国证监会印发2025年度立法工作计划