glob用法技巧
- 开源代码
- 2025-08-27 14:54:03

目录
处理大量文件节省内存
匹配多个文件扩展名
遍历多种格式文件
遍历某一个文件:
查找当前目录和子目录
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 和 .JPG8. 获取绝对路径
技巧:结合 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