Python 経由で抽出したい情報を含む複数の lua ファイルがあります。Python 内で Lua を使用するには、lunatic-pythonを使用していますが、それは要件ではありません。他のアプローチがあれば、それも問題ありません。
lua ファイルは次のようになります。
source = {
licences = {
"GPL",
"MIT",
},
env = {
MYTOOL_VERSION = "1.2.3",
OTHER_KEY = "OTHER_VALUE",
},
some_other_keys = {
...
},
}
私が興味を持っている値はsource.env.MYTOOL_VERSION
、 whileMYTOOL
は常に異なるものです。私はluaの経験がないので、「文字列を含むキーの値を取得する」ように指示する方法がわかりませんVERSION
。Luaの概念に関するいくつかのチュートリアルを読みtables
ました (これはまだ少し奇妙に思えますnext
) pairs
。これらの関数はまだ私を混乱させますが、私が見つけた例では、それらは常にループで使用されていますが、次のようなことをすると:
x = next(source.env)
それ以外の
k, v = next(source.env)
x
値ではなくキーのみが含まれているようです。pairs
の代わりに使用するとnext
、関数を取得できますが、呼び出し方がわかりません。
私のPythonscriptは現在次のようになっています:
import lua
with open(project_path) as f:
script = f.read()
lua.execute(script)
i = 1
licences = []
while True:
data = lua.globals().source.licences[i]
if data is None:
break
licences.append(data)
i += 1
version = lua.eval('source.env[next(source.env)]') if lua.globals().source.env is not None else 'unkown',
テーブル内の任意のキーの値を取得するだけで、 を含むものである必要はありません。env
VERSION
では、このファイルの必要なデータを取得して Python で使用するための洗練されたソリューションは何でしょうか?