2013-09-05 13 views
13

Per esempio, posso usare gli script Python in PHP che ci:chiamata script python da rubino

exec("python script.py params",$result); 

dove "script.py" - il nome dello script e variabili $result salvare i dati in uscita.

Come posso farcela con Ruby? Voglio dire, chiama gli script Python da Ruby.

+3

dup di http://stackoverflow.com/questions/2232/calling-bash-commands-from-ruby? – cmd

risposta

8

Un modo potrebbe essere exec.

result = exec("python script.py params") 
+2

Penso che valga la pena notare che l'uso della funzione 'exec' sostituirà il processo in corso con il comando fornito. Se, come me, stai cercando un modo per invocare un comando di shell di aiuto e catturare il risultato, dovresti usare un altro metodo (cioè la risposta di "maniacalrobot" qui sotto). – ChrisCorea

14

È possibile Shell-out a qualsiasi binario guscio e catturare la risposta con apici inversi:

result = `python script.py params` 
3

Un altro modo per fare la stessa cosa sarebbe,

system 'python script.py', params1, params2 
+0

system 'python script.py', * [params1, params2] – Sandeep

+2

Non stai prendendo il risultato. E 'system 'python', * [" script.py ", params1, params2]' è più preciso, credo. – steenslag

+0

Sì, lo so, e non penso che sia persino possibile catturare il risultato attraverso la funzione di sistema. :) – Sandeep

0

ho usato la seguente chiamata python da un modulo di rubino.

Nel mio caso l'utilizzo di exec() non ha funzionato perché interrompe il processo corrente e ha causato l'esito negativo della simulazione che stavo eseguendo.

# run python script 
`python #{py_path_py} #{html_path_py} #{write_path_py}`