1

如何从另一个 Lua 脚本中运行具有用户指定参数的 Lua 脚本?

下面的代码会起作用吗?其中“content_image”是我在“deepdream.lua”脚本中指定的输入图像(保存到图像文件或仍在脚本中),“output_image”是我想要的“deepdream.lua”脚本的输出在我的 Lua 脚本中使用。

dofile("deepdream.lua -content_image content_image -output_image output_image")

我想在另一个 Lua 脚本中运行的脚本可以在这里找到:https ://github.com/bamos/dream-art/blob/master/deepdream.lua

4

2 回答 2

2

如果你想通过传递一些参数来加载和执行脚本,你必须这样做...加载脚本并通过传递一些参数来执行它:

local chunk = loadfile("deepdream.lua")
chunk("-content_image", "content_image", "-output_image", "output_image")

请注意,这不会像这样填充args参数lua.exe。它将参数作为可变参数传递,就像任何其他 Lua 函数一样。所以它会弄乱你的全局变量等等。此外,与 execution 不同lua.exe,这将在当前进程中执行,因此如果出错,则必须由您处理错误。

如果你愿意,编写一个函数来获取你提供的字符串,使用 Lua 模式来解析参数等等,然后用这些参数加载脚本并不难。

如果您想完全按照之前使用过的方式执行脚本lua.exe,那么您只需使用os.execute

os.execute("lua.exe deepdream.lua -content_image content_image -output_image output_image")
于 2017-03-09T17:41:37.283 回答
2

您可以在 arg 中使用带有参数的 loadfile:

loadfile("deepdream.lua")({content_image="content_image",output_image="output_image"})

在 deepdream.lua 中:

local arg={...}

local content_image = arg[1].content_image
local output_image  = arg[1].output_image
于 2017-03-09T18:11:31.867 回答