我有多个lua文件,其中包含我想通过Python提取的信息。要在Python中使用Lua,我使用的是lunatic-python,但这不是必需条件 - 如果您有其他方法,也可以。在lua中搜索包含特定字符串的密钥
的LUA文件看起来像:
source = {
licences = {
"GPL",
"MIT",
},
env = {
MYTOOL_VERSION = "1.2.3",
OTHER_KEY = "OTHER_VALUE",
},
some_other_keys = {
...
},
}
我感兴趣的值是source.env.MYTOOL_VERSION
,而MYTOOL
始终是不同的东西。由于我对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中使用它?