2016-11-16 1 views
0

이것은 내 첫 번째 게시물이므로 일부 규칙을 따르는 것을 잊어 버리면 & 주인을 가르쳐주세요. Python이 C 프로그램과 상호 작용하는 내부

그래서 파이썬이 만들어 :

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

forza4 플레이어 승리 중 하나까지 scanf와 입력 (숫자 1-7) 접수에 미니 게임이다.

내 파이썬 코드가 게임이 끝날 때까지 forza4에 직접 입력하기를 원하므로 사용자 입력이 필요하지 않습니다.

문제는 파이썬이 분명히 forza4를 먼저 실행하고 끝난 후에 만 ​​os.system("7")이됩니다.

queston은 : 실행중인 동안 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

시스템 명령에 subprocess를 사용하는 것이 좋습니다. 명령 옵션에는 좋은 구문이 있습니다.

import subprocess 

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

은'subprocess.call ("./ forza4")'와 같은 방식으로 프로그램을 생성했기 때문에 주어진 입력이 없다. – zarathustra

+0

그러나 나는 f4 = subprocess.Popen "./forza4"= 표준 입력 subprocess.PIPE)' 및 'f4.communicate ("7")은' 문제는 단지 7 연속적 끝까지 주어진다 지금 하지만 어떻게 든 고칠 것입니다. 감사합니다. – zarathustra

+0

예,'subprocess.call'은 시스템 명령 만 실행합니다. [이 응답] (http://stackoverflow.com/a/4760517/2701363)에 설명 된대로 'Popen'함수가 필요한 명령의 출력을 읽으 려했다고 지정하지 않았습니다. 나는 당신이 "7"이 끝까지 계속 주어지는 것을 의미하는 것에 대해 더 구체적으로 설명해야 할 것입니다. – kiliantics

관련 문제