我有多個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中使用它?