GIMP script-fu,可以 "file-glob" return 只有具有特定扩展名的文件吗?

GIMP script-fu, can "file-glob" return only files with particular extentions?

我正在尝试在 GIMP 中使用 python-fu。我想要 pdb.file_glob 到 return 我指定格式的图像文件数组。我试过了:

myGlob = "*.png|*.PNG|*.jpg|*.JPG|*.gif|*.GIF|*.xcf|*.XCF"
globpath = os.path.join(patternDir, myGlob)
num_files, files = pdb.file_glob(globpath, 0)

但是文件数组总是空的,我假设是因为 glob 语法无效。

请注意,如果我使用 myGlob="*",我得到了我想要的图形文件,但我也得到了我想要排除的文件,例如“fake.txt”。

所有PDB函数的文档都可以通过Python-fu控制台找到。点击 Browse... 按钮,然后在左侧窗格顶部的筛选栏中输入您的搜索内容。这个文档是动态的,它包括任何可调用的文档plugin/script(当然只要作者写了一些)

Python 的 PDB 函数是 script-fu API 的直接映射。在这种特定情况下,file_glob() 最近被添加到脚本 fu API 中,因为基本 TinyScheme 语言中没有任何东西可以做到这一点。在 Python 中,您最好使用标准 Python API、os.walk()glob.glob()/glob.iglob().

在任何情况下,此类函数仅进行简单的模式匹配,如果您想要多个扩展,您需要这样的东西:

sorted([filename for ext in ['XCF','xcf','jpg','JPG','jpeg','gif','GIF'] for filename in glob.glob('*.'+ext)])

编辑:这是一个“理解”,或多或少是一个内部指令在外部的循环。您可以将其解读为:

files=[]
for ext in ['XCF','xcf','jpg','JPG','jpeg','gif','GIF']:
    for filename in glob.glob('*.'+ext):
        list.append(filename)