我有一个Python脚本,其中涉及多个subprocess.call
命令。我在Mac上编写的脚本运行得很完美。我刚刚尝试在Windows上运行它,但却遇到了一个错误。
以下调用ImageMagick的命令返回"exit status 4":
file1 = "D:/Temp/OCR_test/sample/images/crops/time_0011.png"
subprocess.call(['convert', file1, '-resize', '200%', file1])
将命令更改为以下内容即可正常工作:
subprocess.call(['convert', file1, '-resize', '200%', file1], shell=True)
我对使用shell=True
有些犹豫,因为文档中有警告。
我希望命令可以在Mac和Windows上运行,但我不明白为什么它不能在Windows上运行(我检查过使用Windows CMD命令可以工作)。
有趣的是,脚本中早期的以下代码行是有效的(其中file
、lat_crop1
和croplat
是定义的变量):
subprocess.call(['ffmpeg', '-loglevel', 'panic', '-i', file, '-vf', lat_crop1, '-n', croplat])
我看了这篇SO问题并尝试了各种建议(shlex、命令的变化等等),但我还是得到了相同的结果。
有没有人有任何想法,如何修改那行代码,使它可以在不使用shell=True
的情况下工作?
此外,“退出状态4”是什么意思?我谷歌搜索并阅读了很多文档,但没有找到相关内容。
编辑:根据答案中提供的信息,我将不起作用的命令改为subprocess.call(['mogrify', file1, '-resize', '200%', file1])
,并且这个命令在Windows上的Python中成功运行。幸运的是,ImageMagick提供了mogrify
作为convert
的替代方法。
convert
命令是什么?ImageMagick? - Blorgbeardwhere convert
? - Jean-François FabreC:\Program Files\ImageMagick-6.9.2-Q16-HDRI\convert.exe
和C:\Windows\System32\convert.exe
。我现在看到这可能会产生问题了。 - Evan