您可以使用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
参数是在启动时应该执行的代码(您的函数)。
结果的值将是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()
读取输出。在sendline()
之后,第一个child.readline()
将读取命令被打印到STDOUT
的那一行。