2013-09-05 8 views
13

Na przykład, można użyć skryptów Python w PHP jak tam:połączeń skrypt python, ruby ​​

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

gdzie "script.py" - nazwa skryptu i zmienna $result zapisać dane wyjściowe.

Jak mogę to zrobić z Ruby? Mam na myśli wywoływanie skryptów Pythona z Ruby.

+3

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

Odpowiedz

8

Jednym ze sposobów byłoby exec.

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

Myślę, że warto zauważyć, że użycie funkcji 'exec' zastąpi bieżący uruchomiony proces dostarczonym poleceniem. Jeśli, tak jak ja, szukasz sposobu wywołania pomocniczej komendy powłoki i przechwycenia wyniku, powinieneś użyć innej metody (np. Odpowiedź "maniacalrobot" poniżej). – ChrisCorea

14

Można shell-out do każdej binarnym powłoki i uchwycić odpowiedź z backticks:

result = `python script.py params` 
3

Innym sposobem, aby zrobić to samo byłoby,

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

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

+2

Nie łapiesz wyniku. "Python" systemu, * ["script.py", params1, params2] 'jest bardziej dokładny, jak sądzę. – steenslag

+0

Tak, wiem o tym i nie sądzę, że możliwe jest złapanie wyniku przez funkcję systemu. :) – Sandeep

0

użyłem następujące wywołanie Pythona z modułu Ruby.

W moim przypadku użycie exec() nie zadziałało, ponieważ przerywa bieżący proces i spowodowało niepowodzenie symulacji, którą wykonywałem.

# run python script 
`python #{py_path_py} #{html_path_py} #{write_path_py}` 
Powiązane problemy