2016-07-06 36 views
1

我有一個帶有命令行輸入的Lua腳本,我想用Python(2.7)運行並讀取輸出。例如,我會在終端(Ubuntu的14.xx)運行代碼的樣子:在Python中使用子進程模塊運行帶命令行輸入的lua腳本

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

如何運行使用的子模塊在Python命令行中輸入一個Lua腳本?我認爲它會是這樣的:

import subprocess 

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

什麼是正確的方法來做到這一點?

這與以下鏈接非常相​​似,但不同之處在於我嘗試使用命令行輸入。下面的問題只是調用(Lua)腳本中定義的Lua函數,並將輸入直接提供給該函數。任何幫助將非常感激。

Run Lua script from Python

回答

2

如果你不知道,你通常可以通過在shell工作逐字字符串,並將shlex.split把它分解:

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

但是,你通常不需要這樣做,只要你知道,可以用手分割參數他們提前什麼:

subprocess.check_output(['lua', 'sample.lua', '-arg1', 'helloworld', '-arg2', 'helloworld']) 
+0

這對我來說工作,看起來像最完整的答案。謝謝! – sfortney

1

試試這個:

import subprocess 

print subprocess.check_output('lua sample.lua -arg1 helloworld -arg2 "helloworld"', shell=True) 
+0

感謝您的回覆。我嘗試過這一個,它並沒有工作。這可能只是我的代碼的一個功能。也許它會幫助其他人來到這裏 – sfortney

相關問題