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

时间:2017-03-09 17:31:26

标签: command-line lua deep-dream

如何从另一个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

2 个答案:

答案 0 :(得分:2)

如果要通过向其传递许多参数来加载和执行脚本,则必须通过以下方式执行此操作:加载脚本并通过向其传递一些参数来执行它:

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

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

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

如果您想要执行一个脚本,就像您在其上使用lua.exe一样,那么您只需使用os.execute

os.execute("lua.exe deepdream.lua -content_image content_image -output_image output_image")

答案 1 :(得分: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