使用一个 glob.glob 而不是多个 glob.glob

sin*_*ium 5 python glob python-3.x

我有一个包含不同类型文件的文件夹。我只需要处理图像文件(jpg、png、jpeg、JPG...)。为此,我glob.glob只获取带有“jpg”、“png”等扩展名的文件。
问题是我必须使用glob.glob多次(与图像扩展名数量一样多)才能获取所有图像:

import glob
images = glob.glob('tests/*.jpg') + glob.glob('tests/*.jpeg') + glob.glob('tests/*.png') + glob.glob('tests/*.JPG')  
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以glob.glob以更优化的形式使用(类似glob.glob('path/*.{'jpg', 'png', 'jpeg', 'JPG'}),或者是否有更简单的函数来使用它而不是glob

han*_*olo 4

您不能进行复杂的通配符通配符glob.glob('*.{JPG, png..}),因为如果您查看源代码,您会看到,

def glob(pathname):
    """Return a list of paths matching a pathname pattern.
    ....
    """
    return list(iglob(pathname))
Run Code Online (Sandbox Code Playgroud)

然后如果你找到了它的源头iglob你就会看到,

def iglob(pathname):
    ....
    ....
    dirname, basename = os.path.split(pathname)

    # voila, here, our complex glob wildcard will certainly break, and can't be used :)
Run Code Online (Sandbox Code Playgroud)

因此,你只能使用简单的globbing glob:)