gpt4 book ai didi

python - SCons - 转换目录中的所有图像

转载 作者:行者123 更新时间:2023-12-01 06:17:50 26 4
gpt4 key购买 nike

我想编写一个 SConstruct 文件,它将(例如)目录中的所有 JPEG 文件转换为 PNG。

我想我的构建器还不错:

ConvToPNG = Builder(action = 'convert $SOURCE $TARGET',
suffix = '.png',
src_suffix = '.jpg')
env['BUILDERS']['ConvToPNG'] = ConvToPNG

但是我不确定如何列出所有需要构建的目标。我可以用 Python-y 的方式来做到这一点,如下所示:

pix_conversions = [env.ConvToPNG(jpg_src) for jpg_src in Glob('pix/img_*.jpg')]

然后也许我会为这些使用别名:

env.Alias('convert_all', pix_conversions)

或者手动创建一个节点并使其取决于转换。

问题是,这似乎是扫描仪的用途。但我无法让它正常工作。我尝试制作一个可以在目录上运行的构建器,并调用一个可以添加一堆目标的扫描器,但它不起作用,因为 SCons 内部期望构建器在文件上运行。 (或者至少,这是我从错误消息中收集到的)。

是否有更多 SCons 风格的方法来做到这一点?

最佳答案

您的步骤看起来不错,但您需要将 Alias 节点传递给 AlwaysBuild 函数:

env.AlwaysBuild(env.Alias('convert_all', pix_conversions))

所以最终结果是:

ConvToPNG = Builder(action = 'convert $SOURCE $TARGET',
suffix = '.png',
src_suffix = '.jpg')
env['BUILDERS']['ConvToPNG'] = ConvToPNG
pix_conversions = [env.ConvToPNG(jpg_src) for jpg_src in Glob('pix/img_*.jpg')]
env.AlwaysBuild(env.Alias('convert_all', pix_conversions))

无需任何扫描仪即可正常工作。 SCons 将检查 JPEG 文件的 MD5 哈希值,如果自上次转换后某些文件发生更改,则构建器将再次启动。

关于python - SCons - 转换目录中的所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com