gpt4 book ai didi

python - 如何不在子流程中引用参数?

转载 作者:行者123 更新时间:2023-11-28 23:01:20 24 4
gpt4 key购买 nike

我正在尝试使用 subprocess.call 从 Python 2.7 调用 ImageMagick 命令。我的问题是子进程中的参数解析器在每个参数周围都加上了双引号,而 ImageMagick 似乎对非文件参数周围的引号有问题。

我想要的是这样的

"imagemagick.exe" "im1.png" "im2.png" -alpha off ( ... ) -composite "im3.png"

到目前为止,除了使用丑陋的 + " " + 手动构造字符串外,我找不到使用子流程来完成此操作的方法。元素并用 shell=True 调用它.

这是我的代码:

args = [    imagemagick,
filename + "_b.bmp",
filename + "_w.bmp",
"-alpha off ( -clone 0,1 -compose difference -composite -negate ) ( -clone 0,2 +swap -compose divide -composite ) -delete 0,1 +swap -compose Copy_Opacity -composite",
filename + ".png" ]

subprocess.call( args )

有什么方法可以使用子进程调用不带双引号的正确命令吗?

更新:插入了完整的命令行。我想把那部分放在一起,而不是作为“alpha”、“-off”……一个接一个。

最佳答案

当使用subprocess 调用外部程序时,每个 参数必须是args 的不同元素。所以尝试:

args = [    imagemagick,
filename + "_b.bmp",
filename + "_w.bmp",
"-alpha", "off", "( ... )", "-composite",
filename + ".png" ]

我不确定 ( ... ) 代表什么,但是如果您在命令行中放置未加引号的空格,它们应该是 args 中的单独元素> 也是。

关于python - 如何不在子流程中引用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11130538/

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