작은 스크립트 작업 중입니다. 스크립트는 3 개의 터미널을 열고이 터미널과 독립적으로 상호 작용해야합니다.Python에서 터미널과 상호 작용하는 방법
저는 서브 프로세스가이를 수행하는 가장 좋은 방법이라는 것을 잘 알고 있습니다. 지금까지 해본 내용 :
# /usr/bin/env python
import subprocess
term1 = subprocess.Popen(["open", "-a", "Terminal"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
term1.communicate(input="pwd")
내 문제는 새로운 터미널과 상호 작용할 수 없다는 것입니다. 이 부분 term1.communicate(input="pwd")
이 작동하지 않습니다. 새 터미널에 명령을 보낼 수 없습니다. 나는 또한 term1.communicate(input="pwd\n")
을 시도했지만 아무 일도 일어나지 않습니다.
어떻게 할 수 있습니까?
P. Mac OS를 사용하고 있습니다.
달성하려는 작업에 대해 새 터미널을 열어야합니까, 아니면 'pwd'를 실행하고 출력을 캡처해야합니까? – user2085282
또한,'communicate'는 프로세스가 완료 될 때까지 기다립니다. 터미널은 일반적으로 닫힐 때까지 종료되지 않으므로 아무 것도하지 않습니다. – user2085282
@ user2085282 제 경우에 2 개의 명령을 실행해야합니다 : "sudo tcprelay telnet"및 "tcprelay --portoffset [arg1] [arg2]"그러나 새로운 터미널을 열지 않고 명령을 실행하면 문제가 발생합니다. 첫 번째 작업이 완료되거나 종료 될 때까지 두 번째 작업을 수행 할 수 있습니다. 그게 내가이 솔루션을 사용하는 이유입니다. –