在 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 文件中的变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何用Lua.EXE调用Lua文件啊?

怎么解决重复导入 lua

如何在Lua中读取整个文件

python如何导入自定义模块

在 Lua 中如何导入模块?

如何将外部库集成到Cocos Android项目中