2016-11-16 43 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