当前位置: 首页 > 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 osimport 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 globfor 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
http://www.lryc.cn/news/539834.html

相关文章:

  • CodeGPT 使用教程(适用于 VSCode)
  • 以下是MySQL中常见的增删改查语句
  • Vue3 与 TypeScript 实战:核心细节与最佳实践
  • 23种设计模式 - 解释器模式
  • 常用的 React Hooks 的介绍和示例
  • ChatGLM-6B模型
  • 编译安装php
  • 【JavaEE进阶】Spring MVC(3)
  • 30 款 Windows 和 Mac 下的复制粘贴软件对比
  • 【LLAMA】羊驼从LLAMA1到LLAMA3梳理
  • 【OS安装与使用】part3-ubuntu安装Nvidia显卡驱动+CUDA 12.4
  • 【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python
  • JAVA中常用类型
  • 【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)
  • 求矩阵对角线元素的最大值
  • NoSQL之redis数据库
  • 【R语言】非参数检验
  • 【力扣Hot 100】栈
  • HTTP 与 HTTPS:协议详解与对比
  • C++编程语言:抽象机制:模板和层级结构(Bjarne Stroustrup)
  • 建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11
  • 在使用export default 导出时,使用的components属性的作用?
  • 以太网交换基础(涵盖二层转发原理和MAC表的学习)
  • Vue 实现通过URL浏览器本地下载 PDF 和 图片
  • 【2025最新计算机毕业设计】基于SpringBoot+Vue非遗传承与保护研究系统【提供源码+答辩PPT+文档+项目部署】
  • 组合总和力扣--39
  • echarts tooltip高亮某个值,某一项选中高亮状态
  • Vue 3:基于按钮切换动态图片展示(附Demo)
  • 【Java】泛型与集合篇 —— 泛型
  • 【JAVA:list中再定义一个list对象,循环赋值不同的list数据,出现追加重复数据问题】