程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从Python运行Lua脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从Python运行Lua脚本?

开发过程中遇到从Python运行Lua脚本的问题如何解决?下面主要结合日常开发的经验,给出你关于从Python运行Lua脚本的解决方法建议,希望对你解决从Python运行Lua脚本有所启发或帮助;

您可以使用asubprocess来运行Lua脚本并向函数提供参数。

import subprocess

result = subprocess.check_output(['lua', '-l', 'demo', '-e', 'test("a", "b")'])
print(result)

result = subprocess.check_output(['lua', '-l', 'demo', '-e', 'test2("a")'])
print(result)
  • -l需要给定库(脚本)
  • -e是应该在启动时执行的代码(您的函数)

result的值将是的值STDOUT,因此只需将返回值写入其中,就可以在Python脚本中简单地读取它。我在示例中使用的演示Lua脚本仅打印了参数:

function test (a, b)
    print(a .. ', ' .. b)
end

function test2(a)
    print(a)
end

在此示例中,两个文件必须位于同一文件夹中,并且lua可执行文件必须位于上PATH

仅产生一个Lua VM的另一种解决方案pexpect是以交互模式使用和运行VM。

import pexpect

child = pexpect.spawn('lua -i -l demo')
child.readline()

child.sendline('test("a", "b")')
child.readline()
print(child.readline())

child.sendline('test2("c")')
child.readline()
print(child.readline())

child.close()

因此,您可以sendline(...)用来向解释器发送命令并readline()读取输出。读取命令child.readline()后的第一sendline()行将打印到该行STDOUT

解决方法

假设我有一个包含2个函数的Lua脚本。我想用Python脚本中的一些参数调用这些函数。

我看过有关如何使用Lunatic
Python将Lua代码嵌入Python以及反之亦然的教程,但是,我要在Python脚本中执行的Lua函数不是静态的,可能会发生变化。

因此,我需要某种方法来从.lua文件导入功能,或者简单地从Python脚本中使用一些参数执行.lua文件并接收返回值。

有人可以指出我正确的方向吗?

将不胜感激。

@H_616_71@

大佬总结

以上是大佬教程为你收集整理的从Python运行Lua脚本全部内容,希望文章能够帮你解决从Python运行Lua脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。