我有多个 lua 文件,其中包含我想通过 Python 提取的信息。要在 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
”。我阅读了一些关于tables
Lua 中概念的教程(这对我来说仍然有点奇怪),我猜这些功能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 一起使用的优雅解决方案是什么?