4

我正在编写一个在 python 中使用一系列复杂 Imagemagick 命令的脚本。我想知道如何称呼这样的东西......

convert 1.png \( +clone -background black -shadow 110x1+9+9 \) +swap -background none -layers merge +repage 2.png

我很乐意用子进程调用简单的命令,但我还不知道如何指定执行顺序(转义括号)。

当然我可以使用 os.system 或 commands 模块,但由于这些都离开了语言,我肯定更喜欢使用子进程。

4

1 回答 1

2

是的,您想使用subprocess. 您只需将每个参数放在您提供给的参数列表中的一个单独项目中Popen

subprocess.Popen(['convert', '1.png', '(', '+clone', '-background', 'black', '-shadow', '110x1+9+9',
                  ')', '+swap', '-background', 'none', '-layers', 'merge', '+repage', '2.png'],
                 otherargments=values, etc=etc)

您也可以预先建立该参数列表,以防您的参数顺序需要更改。

您不需要对参数进行任何转义(例如参数内的空格或其他特殊的 shell 字符,如“(”和“)”),因为这不会被 shell 解释。

于 2012-05-14T16:01:46.417 回答