2013-09-05 28 views
13

Ví dụ, tôi có thể sử dụng các kịch bản Python trong PHP như có:Gọi python script từ ruby ​​

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

nơi "script.py" - tên kịch bản và biến $result lưu dữ liệu đầu ra.

Làm thế nào tôi có thể tạo bằng Ruby? Ý tôi là, hãy gọi các tập lệnh Python từ Ruby.

+3

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

Trả lời

8

Một cách sẽ được exec.

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

Tôi nghĩ có thể đáng chú ý rằng việc sử dụng hàm 'exec' sẽ thay thế tiến trình đang chạy hiện tại bằng lệnh được cung cấp. Nếu, giống như tôi, bạn đang tìm kiếm một cách để gọi một lệnh shell giúp đỡ và nắm bắt được kết quả, bạn nên sử dụng một phương thức khác (tức là câu trả lời của "maniacalrobot" bên dưới). – ChrisCorea

14

Bạn có thể bao ra cho bất kỳ nhị phân vỏ và nắm bắt được phản ứng với backticks:

result = `python script.py params` 
3

Một cách khác để làm điều tương tự sẽ là,

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

hệ thống 'python script.py', * [params1, params2] – Sandeep

+2

Bạn không bắt được kết quả. Và 'system 'python', * [" script.py ", params1, params2]' chính xác hơn, tôi nghĩ vậy. – steenslag

+0

Vâng tôi biết điều đó, và tôi không nghĩ rằng nó thậm chí có thể nắm bắt được kết quả thông qua chức năng hệ thống. :) – Sandeep

0

tôi đã sử dụng cuộc gọi python sau đây từ một module ruby.

Trong trường hợp của tôi sử dụng exec() không hoạt động vì nó ngắt quá trình hiện tại và khiến mô phỏng tôi đang chạy không thành công.

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