使用 Python 的 subprocess 模块运行带有命令行输入的 Lua 脚本

我有一个带有命令行输入的 Lua 脚本,我想在 Python (2.7) 中运行并读取输出。例如,在终端(Ubuntu 14.xx)中运行的代码如下:

lua sample.lua -arg1 helloworld -arg2 "helloworld"

如何使用 subprocess 模块在 Python 中运行带有命令行输入的 Lua 脚本?我认为应该是这样的:

import subprocess

result = subprocess.check_output(['lua', '-l', 'sample'],
    inputs= "-arg1 helloworld -arg2 "helloworld"")
print(result)

正确的方法是什么?

这与下面的链接非常相似,但不同的是,我还尝试使用命令行输入。下面的问题只是调用脚本(Lua)中定义的 Lua 函数,并将输入直接提供给该函数。任何帮助将非常感激。

从 Python 运行 Lua 脚本

点赞
用户1227938
用户1227938

尝试:

import subprocess

print subprocess.check_output('lua sample.lua -arg1 helloworld -arg2 "helloworld"', shell=True)
2016-07-06 04:16:57
用户748858
用户748858

如果不确定,您通常可以通过 shlex.split 将在 shell 中起作用的原样字符串传递并进行拆分:

import shlex
subprocess.check_output(shlex.split('lua sample.lua -arg1 helloworld -arg2 "helloworld"'))

但是,如果您预先知道它们是什么,通常不需要这样做,可以手动拆分参数:

subprocess.check_output(['lua', 'sample.lua', '-arg1', 'helloworld', '-arg2', 'helloworld'])
2016-07-06 04:18:41