Skip to main content
 首页 » 编程设计

python之如何将参数值传递给 Popen

2025年05月04日15findumars

从 python 控制台这有效:

convert -quality 100 in.pdf out.png 

但是当我像这样将该命令添加到我的 Python 脚本时:

Popen(['convert', '-quality 100', 'in.pdf', 'out.png']) 

我得到:

unrecognized option `-quality 100' 

如果我将该参数更改为 '-quality=100',我仍然会遇到错误。

我试过这样修复它:

Popen(['convert', '-quality', '100', 'in.pdf', 'out.png']) 

运行但未能生成 out.png。

更新:最新版本正在运行。我一定是最初打错了。

请您参考如下方法:

每个参数都有自己的列表元素,所以第二个变体是正确的。

你应该记住,直到调用 communicate完成后,该命令可能仍会运行(尽管在您的情况下这不太可能)。调用 communicate 后检查 returncode 以查明程序是否遇到任何错误(如格式错误的 PDF 文件等)。

此外,imagemagick convert 将多页 PDF 写入多个 PNG 文件(out-0.png、out-1.png)。检查那些是否存在。使用 -append 来抑制该行为。

import subprocess 
Popen = subprocess.Popen 
s = Popen(['convert', '-quality', '100', 'in.pdf', '-append', 'out.png']) 
s.communicate() 
if s.returncode != 0: 
   raise OSError('convert error')