2016-11-16 45 views
0

這是我的第一篇文章,所以如果我忘了遵循一些規則請原諒&教我高手。Python與C程序交互調用裏面

所以我在Python使這個:

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

forza4是一個小遊戲,臨危與scanf輸入(數字1-7),直到玩家的勝利之一。

我想我的Python代碼直接給予forza4的輸入,直到遊戲結束,所以不需要用戶輸入。

問題是Python顯然首先運行了forza4,並且只有在它結束後才做os.system("7")

問題是:有沒有辦法讓我的輸入爲stdin的C程序,而它仍然在運行?

+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

但是我的-kind of-設法用'f4 = subprocess.Popen 」 ./forza4" ,標準輸入= subprocess.PIPE)' 和 'f4.communicate( 「7」)'現在 問題是隻有7給出連續直到結束,但我會修正,不知何故,謝謝 – zarathustra

+0

是的,'subprocess.call'只運行一個系統命令。您沒有指定您想要讀取命令的輸出,您需要'Popen'函數,如[本答案](http://stackoverflow.com/a/4760517/2701363)中所述。如果你需要這方面的幫助,恐怕你不得不更加具體地說明你的意思是「7持續到最後」。 – kiliantics