【问题标题】:How would I run a Lua script with user specified parameters from inside another Lua script?如何从另一个 Lua 脚本中运行具有用户指定参数的 Lua 脚本?
【发布时间】:2017-07-30 19:42:46
【问题描述】:

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

【问题讨论】:

  • os.execute("th deepdream.lua -content_image content_image -output_image output_image")

标签: command-line lua deep-dream


【解决方案1】:

您可以在 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

【讨论】:

    【解决方案2】:

    如果您想通过传递多个参数来加载和执行脚本,您必须通过...加载脚本并通过传递多个参数来执行它:

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

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

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

    如果您想像使用lua.exe 一样执行脚本,那么您只需使用os.execute

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

    【讨论】:

    • 我之所以用第一个脚本运行第二个脚本,是因为两个脚本之间的变量名称相似,会发生冲突。我实际上是在尝试在 Neural-Style 的修改版本中运行这个 DeepDream 脚本:gist.github.com/ProGamerGov/ea432324a09822a19af916fe1bfcfc01,这样我就可以以一种简单的方式将风格转换和 DeepDream 结合起来来测试这个概念。所以我的测试环境是Ubuntu。
    猜你喜欢
    • 2017-01-20
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2019-01-31
    • 2015-08-30
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多