在 Python 中,如何导入定义在 lua 文件中的变量?
Posted
技术标签:
【中文标题】在 Python 中,如何导入定义在 lua 文件中的变量?【英文标题】:In Python, how to import variables defined in a lua file? 【发布时间】:2021-07-01 17:08:47 【问题描述】:我有一些需要用 Python 读取的 lua 文件。我希望能够导入变量(主要是表格)。
LUA 文件示例:
print("lua display text")
Civs =
CIVILIZATION_EGYPT = -- lua comment 1
Playable = true,
SpawnYear = -3000,
StartX = 75,
StartY = 32,
Table = ,
Text = "abc",
TableTable = "a", "b", "c", "d", , , ,
;
CIVILIZATION_INDIA =
Playable = true,
SpawnYear = -3000,
StartX = 98,
StartY = 42,
Table = ,
Text = "abc",
TableTable = "a", "b", "c", "d", , , ,
;
CIVILIZATION_BABYLON =
Playable = true,
SpawnYear = -3000,
StartX = 84,
StartY = 41,
Table = ,
Text = "abc",
TableTable = "a", "b", "c", "d", , , ,
-- lua comment 2
如果只定义了变量,我想我可以只导入文件,它会作为 python 运行。但是有 cmets 甚至打印命令会导致此失败。
【问题讨论】:
"如果只定义变量,我想我可以只导入文件,它会像python一样运行"嗯,不是吗? 您必须编写一个能够理解 lua 语法的解析器。如果您可以使用 lua 读取您的 lua 文件,然后将它们导出为 JSON,那就更容易了。 JSON 似乎是这里最好的选择,只想提一下这个库:github.com/TitanSnow/ffilupa 用于从 python 调用 lua(不知道效果如何) @juanpa.arrivillaga 确实没有:-) 【参考方案1】:从 Python 中读取文件并将变量解析为 Python 变量
在 Lua 中序列化这些变量并在 Python 中反序列化它们
使用自定义 Lua 解释器执行该代码,然后通过 Python API 提供该数据
如果您想自动执行此操作,则第二种方法需要您解析 Lua 代码并注入您自己的代码,以便您可以序列化变量。所以你可以选择第一种方式。
【讨论】:
谢谢,我只想到了第三个选项。但我认为第一个选项(如果我理解正确,即逐行阅读)意味着每次修改文件结构时都维护和更新解析器,我不想这样做。选择第三个选项。以上是关于在 Python 中,如何导入定义在 lua 文件中的变量?的主要内容,如果未能解决你的问题,请参考以下文章