假设我有一个包含2个函数的Lua脚本。我想用Python脚本中的一些参数来调用这些函数。
我已经看过关于如何在Python中嵌入Lua代码的教程,反之亦然,然而,我要在Python脚本中执行的Lua函数不是静态的,可能会发生变化。
因此,我需要某种方法来从.lua文件导入函数,或者简单地从带有一些参数的Python脚本执行.lua文件并接收返回值。
有人能给我指个方向吗?
将不胜感激。
发布于 2015-06-15 17:41:46
您可以使用subprocess来运行您的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是应在start (您的函数)上执行的代码
result的值将是STDOUT的值,所以只需将返回值写入其中,您就可以在Python脚本中简单地读取它。我在示例中使用的演示Lua脚本只是打印参数:
function test (a, b)
print(a .. ', ' .. b)
end
function test2(a)
print(a)
end在本例中,两个文件必须位于同一文件夹中,并且lua可执行文件必须位于您的PATH中。
另一种只产生一个Lua的解决方案是使用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()读取输出。sendline()之后的第一个child.readline()读取命令将打印到STDOUT的行。
https://stackoverflow.com/questions/30841738
复制相似问题