【问题标题】:problems with subprocess.callsubprocess.call 的问题
【发布时间】:2023-04-10 05:46:01
【问题描述】:

blow 命令在 shell/终端中运行良好,但在我的 python 脚本中使用 subprocess.call() 方法调用它时出现问题。

-- command in shell/terminal
$ th neural_style.lua -gpu 0 -style_image input/style.jpg -content_image input/img.jpg

-- subprocess.call() in python script
# this works
subprocess.call(["th", "neural_style.lua", "-gpu", "0"])
# this goes wrong - Error during read_image: Read Error
-- subprocess.call in the python script
subprocess.call(["th", "neural_style.lua", "-gpu", "0", "-style_image" "input/style.jpg" "-content_image" "input/img.jpg"])

我应该如何使用 subprocess.call ?

【问题讨论】:

  • 出了什么问题?您是否收到特定的错误消息?
  • subprocess.call(["th", "neural_style.lua", "-gpu", "0", "-style_image", "input/style.jpg", "-content_image", "输入/img.jpg"])
  • read_image 期间出错:读取错误
  • @JasonD 那会完成什么?
  • "-style_image" "input/style.jpg" "-content_image" "input/img.jpg" 之间缺少逗号

标签: python subprocess


【解决方案1】:

正如错误消息所说,它无法读取图像。该错误(可能)来自您正在调用的th 程序。我猜您尚未共享的错误消息中有其他信息,但最可能的解释是您从不同的目录运行 Python 脚本,而不是直接运行 th 的目录。例如,您是否从 IDE 运行 Python 脚本?它可能正在运行相对于工作区或项目目录的命令。

首先要尝试将图像参数交换为absolute paths(例如/home/username/input.style.jpg 或它们所在的任何位置)。这将解决从不同目录运行的脚本。

一旦您确认这是问题所在,您将如何解决它取决于您。您可以简单地从正确的目录运行 Python 脚本,可以指定相对于脚本运行位置的路径,或者您可以简单地始终使用 Python 脚本的绝对路径。你选择哪一个真的取决于你的用例。

【讨论】:

  • 感谢您的建议,但路径是正确的。我已经解决了这个问题。在我的脚本中调用 subprocess.call() 之前,我打开了其中一个图像 input/img.jpg,但没有关闭它。所以关闭文件使它正确。
  • @yangao 太糟糕了,你没有在你的问题中包含这个。如果您不提供所有详细信息,或者更好的是MCVE,人们只能猜测您的问题可能是什么。
猜你喜欢
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多