glob 用法技巧

目录

1. 遍历加编号

2. 处理大量文件节省内存

3.匹配多个文件扩展名

遍历多种格式文件

遍历某一个文件:

查找当前目录和子目录,就是2级子目录,3级子目录失败

6. 排除特定文件

7. 大小写不敏感匹配

8. 获取绝对路径

9. 处理特殊字符


1. 遍历加编号

from glob import glob

res=glob(r"E:\project\jijia\tools_jijia\reid_track/*.py")
for ii, video_path in enumerate(res):

    print(ii,video_path)

2. 处理大量文件节省内存


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

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

3.匹配多个文件扩展名

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

# 方法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"):

查找当前目录和子目录,就是2级子目录,3级子目录失败

import glob

if __name__ == '__main__':

    # 查找当前目录及其子目录下所有的 .py 文件
    py_files_recursive = glob.glob("E:\project\Grounded-SAM-2-main\sav_dataset/**/*.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值