python脚本转lua_从Python运行Lua脚本

该博客介绍了如何在Python中使用子进程或pexpect库来调用Lua脚本,并传递参数。通过`subprocess.check_output`或`pexpect.spawn`执行Lua命令,可以实现与Lua函数的交互,读取并处理返回值。示例代码展示了如何在Python中执行Lua脚本中的函数并获取输出结果。
摘要由CSDN通过智能技术生成

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

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

因此,我需要某种方法从.lua文件导入函数,或者只是使用一些参数从Python脚本执行.lua文件并接收返回值.

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

非常感谢.

解决方法:

您可以使用子进程来运行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(你的函数)上执行的代码

结果的值将是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的行.

标签:python,lua,lupa

来源: https://codeday.me/bug/20190528/1170133.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值