2016-11-16 7 views
0

これは私の最初の投稿ですので、いくつかの規則に従うのを忘れてしまったら&私に師匠を教えてください。PythonがCプログラムと対話して内部にある

だから私はPythonでこれを作った:

import os 
os.system("./forza4") 
os.system("7") 

forza4は、プレイヤーの勝利の1までscanfで入力(番号1-7)recievesミニゲームです。

私のPythonコードは、ゲームが終了するまでforza4への入力を直接与えるので、ユーザー入力は必要ありません。

問題はPythonは明らかにforza4を最初に実行し、終了後はos.system("7")になります。

クエストオンは:実行中にCプログラムの入力をstdinに与える方法はありますか?

+0

ヒント:サブプロセスモジュールを参照してください。 https://docs.python.org/2/library/subprocess.html –

+0

Pythonでスレッド間の通信を検索する。 –

+0

[pexpect](https://pexpect.readthedocs.io/en/stable/api/pexpect.html)をご覧ください。 –

答えて

0

システムコマンドにはサブプロセスを使用することをお勧めします。コマンドオプションには優れた構文があります。

import subprocess 

subprocess.call(["./forza4", "7"]) 
+0

は 'subprocess.call(" ./ forza4 ")'と同じことをしているので、プログラムは生成され、入力は与えられていません – zarathustra

+0

しかし、私は〜f4 = subprocess.Popen 」./forza4" 、STDIN = subprocess.PIPE) ' と ' f4.communicate( "7") ' 問題についてのみ7が終了するまで連続的に与えられています、ありがとうございます。 – zarathustra

+0

はい、 'subprocess.call'はシステムコマンドだけを実行します。 [この回答](http://stackoverflow.com/a/4760517/2701363)で説明されているように、あなたは 'Popen'関数が必要なコマンドの出力を読みたいと指定していませんでした。私は、あなたがこれを助けたい場合は、「7が最後まで継続的に与えられている」ということについてもっと具体的に述べなければならないのではないかと心配しています。 – kiliantics

関連する問題