【发布时间】:2016-01-21 19:52:44
【问题描述】:
我一直在浏览一些类似的帖子和 ImageMagick 页面,但似乎找不到问题的原因:
注意我使用的是windows机器。
我在一个文件夹中有一个 .ps 图像,当使用从 cmd 转换它的命令运行时它可以工作:convert saved.ps newsaved.png
但是当我尝试使用以下代码从我的 python 脚本中执行它时:
args = ["convert","saved.ps newsave.png"]
subprocess.Popen(args)
#or this call(args)
os.system("start newsave.png")
cmd 窗口显示 newsave.png 是无效参数。 (错误信息是:cmd窗口中的Invalid parameter - newsave.png,然后立即关闭)
在args 中用逗号分隔所有内容也无济于事。 os.getcwd() 也返回当前工作目录,所以我知道我在正确的目录中。调用子进程时发生错误。
【问题讨论】:
-
如果你用这个
args = ['convert', 'saved.ps', 'newsave.png']subprocess.Popen(args)怎么办?因为如果 saved.ps 在工作目录中,那对我来说很好。您可以使用import osos.getcwd()btw 打印您当前的工作目录。 -
您使用的是 Windows。可能您尝试运行 ImageMagick 的
convert命令实际上是在运行 Windowsconvert命令,该命令试图将硬盘分区从 FAT 转换为 NTFS 格式。尝试使args的第一个参数成为 ImageMagickconvert命令的完整路径。 -
当直接从 cmd 使用它时它工作正常,当试图从 python 调用它时它会导致问题。
-
这两种情况下的搜索路径可能不同。试一试。
-
抱歉,我的 Windows 技能欠缺。找出安装 ImageMagick 时可执行命令
convert的安装位置。与此同时,这里有一个不为人知的可能性:尝试在对subprocess.call或subprocess.Popen的调用中添加shell=True。我不知道这是否会有所作为,而且我没有方便测试的 Windows 安装。
标签: python cmd postscript imagemagick-convert