5

私はこれを見てきました、あまり役に立ちませんでした。

cmd ラインに質問を入力する Ruby プログラムがあり、回答を返すことができる Python プログラムを作成したいと考えています。誰かがリンクを知っていますか、または一般的にこれを行うにはどうすればよいですか?

ご協力いただきありがとうございます。

編集 パイピング
について言及してくれた人たちに感謝します。私はそれをあまり使っていませんでした。

4

5 に答える 5

10
p = subprocess.Popen(['ruby', 'ruby_program.rb'], stdin=subprocess.PIPE, 
                                          stdout=subprocess.PIPE)
ruby_question = p.stdout.readline()
answer = calculate_answer(ruby_question)
p.stdin.write(answer)
print p.communicate()[0]  # prints further info ruby may show.

最後の 2 行を 1 行にできます。

print p.communicate(answer)[0]
于 2009-01-21T14:12:23.970 に答える
4

Unix / Linux を使用している場合は、パイプを使用できます。

question.rb | answer.py

次に、question.rb の出力が answer.py の入力になります。

最近は試していませんが、同じ構文が Windows でも機能する可能性があると感じています。

于 2009-01-21T14:05:22.923 に答える
3

期待する

http://www.noah.org/wiki/Pexpect

Pexpect は、純粋な Python の expect に似たモジュールです。Pexpect により、Python は他のアプリケーションを制御するための優れたツールになります。

Pexpect は、子アプリケーションを生成するための純粋な Python モジュールです。それらを制御します。出力で予想されるパターンに応答します。Pexpect は Don Libes の Expect のように機能します。Pexpect を使用すると、スクリプトで子アプリケーションを生成し、人間がコマンドを入力しているかのように制御できます。

于 2009-01-21T14:08:51.043 に答える
3

まず、これをチェックしてください: [Unix パイピング][1]

WindowsまたはUNIXで動作しますが、最初にプログラムが少し異なります。

question.rb:

puts "This is the question"

answer.rb:

question = gets
#calculate answer
puts "This is the answer"

次に、コマンドライン:

UNIX の場合:

question.rb | answer.rb

ウィンドウの場合:

ruby question.rb | ruby answer.rb

出力:

This is the question
This is the answer
于 2009-01-21T14:12:50.707 に答える
1

これを行うには2つの方法があります(私の頭の上から)。Unix 環境で使用している場合の最も簡単な方法は、パイプを使用することです。簡単な例:

cat .profile .shrc | more

これにより、最初のコマンド ( cat .profile .shrc)の出力がmore、パイプ文字を使用してコマンドに送信されます|

2 番目の方法は、ソース コード内で 1 つのプログラムを別のプログラムから呼び出すことです。Ruby がこれをどのように処理するかはわかりませんが、Python では popen 関数を使用してプログラムを実行し、その出力を取得できます。Learning Python のこの例の章を参照してから、サンプルコードについては「popen」の Ctrl-F を参照してください。

于 2009-01-21T14:08:57.423 に答える