python-2.7 - 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)
但是文件数组总是空的,我认为是因为 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','xcf','jpg','JPG','jpeg','gif','GIF']:
for filename in glob.glob('*.'+ext):
list.append(filename)
推荐阅读
- python - 将两个 DF 与一个与 PANDAS 有点相似的列合并
- ios - Module RCTLog 不是注册的可调用模块,Module AppRegistry 不是注册的可调用模块,Module RCTDeviceEventEmitter 不是
- python - 将特定行移动到熊猫数据框顶部或底部的功能
- c# - 解析 DryIoc DI-Container 中的命名服务
- python - 比“for”更快的方法来扫描 DataFrame - Python
- reactjs - 将表单输入的值传递给函数 onSubmit
- google-apps-script - 使用应用程序脚本从谷歌表格中删除电子邮件时如何从谷歌联系人中删除联系信息
- vuejs3 - Vue 3 在单独的文件中重用组合 API
- php - 按月显示总值
- ruby - 尝试使用字符串插值时为 nil:NilClass 获取未定义的方法 []