主页 > 开源代码  > 

glob用法技巧

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
标签:

glob用法技巧由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“glob用法技巧