微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GIMP script-fu,“file-glob”可以只返回具有特定扩展名的文件吗?

如何解决GIMP script-fu,“file-glob”可以只返回具有特定扩展名的文件吗?

我正在尝试在 GIMP 中使用 python-fu。我希望 pdb.file_glob 以我指定的格式返回一组图像文件。我试过了:

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

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

请注意,如果我使用 myGlob="*",我会得到我想要的图形文件,但也会得到诸如“fake.txt”之类的文件,我想排除这些文件

解决方法

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

Python 的 PDB 函数是 script-fu API 的直接映射。在这种特定情况下,file_glob() 最近被添加到 script-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','GIF']:
    for filename in glob.glob('*.'+ext):
        list.append(filename)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。