2017-03-09 8 views
1

別の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

+0

'os.execute(" th deepdream.lua -content_image conte nt_image -output_image output_image ")' –

答えて

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") 
+0

2つ目のスクリプトを最初のスクリプトで実行する理由は、2つのスクリプト間の変数が似た名前になって衝突することです。私は実際に、このニュートラルスタイルの修正バージョン内でこのDeepDreamスクリプトを実行しようとしています。つまり、https://gist.github.com/ProGamerGov/ea432324a09822a19af916fe1bfcfc01です。コンセプトをテストするための簡単な方法でスタイル転送とDeepDreamを組み合わせることができます。だから私のテスト環境はUbuntuです。 – ProGamerGov

+0

私は[rings](https://github.com/keplerproject/rings)の言及を追加したいと思います。 –

2

あなたは引数にパラメータを指定してロードファイルを使用することができます。

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

in deepdream.lua:

local arg={...} 

local content_image = arg[1].content_image 
local output_image = arg[1].output_image 
関連する問題