0

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',

テーブル内の任意のキーの値を取得するだけで、 を含むものである必要はありません。envVERSION

では、このファイルの必要なデータを取得して Python で使用するための洗練されたソリューションは何でしょうか?

4

1 に答える 1