【问题标题】:In Python, how to import variables defined in a lua file?在 Python 中,如何导入定义在 lua 文件中的变量?
【发布时间】: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 确实没有:-)

标签: python lua


【解决方案1】:
  • 从 Python 中读取文件并将变量解析为 Python 变量

  • 在 Lua 中序列化这些变量并在 Python 中反序列化它们

  • 使用自定义 Lua 解释器执行该代码,然后通过 Python API 提供该数据

如果您想自动执行此操作,则第二种方法需要您解析 Lua 代码并注入您自己的代码,以便您可以序列化变量。所以你可以选择第一种方式。

【讨论】:

  • 谢谢,我只想到了第三个选项。但我认为第一个选项(如果我理解正确,即逐行阅读)意味着每次修改文件结构时都维护和更新解析器,我不想这样做。选择第三个选项。
猜你喜欢
  • 2017-11-18
  • 2017-07-07
  • 2021-07-11
  • 2019-06-20
  • 1970-01-01
  • 2020-03-29
  • 2011-10-06
  • 1970-01-01
  • 2016-01-11
相关资源
最近更新 更多