Как запустить скрипт Lua с указанными пользователем параметрами из другого скрипта Lua?

Как запустить скрипт 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 ответа

Вы можете использовать loadfile с параметрами в arg:

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

Если вы хотите загрузить и выполнить скрипт, передав ему ряд параметров, вы должны сделать это,... загрузив скрипт и выполнив его, передав ему ряд параметров:

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")
Другие вопросы по тегам