如何在Lua内将运行时变量传递给Python脚本?

我有一段Lua代码生成图像和其他数据容器,然后这些数据应该在另一个Python脚本中使用。

我尝试使用(os.execute(command)),如此所示https://www.lua.org/pil/22.2.html,但我不知道如何将这些参数直接从Lua传递给Python脚本作为参数。

点赞
用户908494
用户908494

命令行参数只能是字符串,并且只能是相对较短的字符串,并且只能处理您默认系统编码可以处理的字符串。

如果你需要传递大量的、结构化的或者随机的二进制字节数据,就不能使用命令行参数了。

最简单的解决方案是将数据保存在文件中,然后将文件名作为命令行参数传递。然后,在 Python 端,你只需要打开并读取同一个文件。

你也可以将数据流传输到子进程的标准输入中。Lua 并没有像 Python 中的 subprocess 模块那样的东西,但有时候 popen 就足够了。

popen 不够用时,你可以借助 POSIX 或者 Windows API 调用来自己构建它。参见 这个回答 以了解如何在 POSIX 系统上实现。

你也可以仅仅打开一个管道、共享内存段等,让子进程继承它,然后将文件描述符或者密钥作为命令行参数传递。

最后,你可以编写一个简单的套接字服务器(可能使用已有的更高级协议库,范围从 Netstrings over UDP 到 HTTP),并将端口号作为命令行参数传递。

2018-04-08 21:02:53