私はこれを見てきましたが、あまり役に立ちませんでした。
cmd ラインに質問を入力する Ruby プログラムがあり、回答を返すことができる Python プログラムを作成したいと考えています。誰かがリンクを知っていますか、または一般的にこれを行うにはどうすればよいですか?
ご協力いただきありがとうございます。
編集 パイピング
について言及してくれた人たちに感謝します。私はそれをあまり使っていませんでした。
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]
Unix / Linux を使用している場合は、パイプを使用できます。
question.rb | answer.py
次に、question.rb の出力が answer.py の入力になります。
最近は試していませんが、同じ構文が Windows でも機能する可能性があると感じています。
期待する
http://www.noah.org/wiki/Pexpect
Pexpect は、純粋な Python の expect に似たモジュールです。Pexpect により、Python は他のアプリケーションを制御するための優れたツールになります。
Pexpect は、子アプリケーションを生成するための純粋な Python モジュールです。それらを制御します。出力で予想されるパターンに応答します。Pexpect は Don Libes の Expect のように機能します。Pexpect を使用すると、スクリプトで子アプリケーションを生成し、人間がコマンドを入力しているかのように制御できます。
まず、これをチェックしてください: [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
これを行うには2つの方法があります(私の頭の上から)。Unix 環境で使用している場合の最も簡単な方法は、パイプを使用することです。簡単な例:
cat .profile .shrc | more
これにより、最初のコマンド ( cat .profile .shrc
)の出力がmore
、パイプ文字を使用してコマンドに送信されます|
。
2 番目の方法は、ソース コード内で 1 つのプログラムを別のプログラムから呼び出すことです。Ruby がこれをどのように処理するかはわかりませんが、Python では popen 関数を使用してプログラムを実行し、その出力を取得できます。Learning Python のこの例の章を参照してから、サンプルコードについては「popen」の Ctrl-F を参照してください。