파이썬 콘솔 입출력 툴 pexpect
파이썬에서 배시 쉘에 명령어를 입력하는 방법은 보통 3가지가 있다.
- os.system("명령어")
명령어 실행 결과값(성공 유무)만 리턴
ex) 성공시 exit status 0
- os.popen("명령어")
출력값을 문자열로 리턴
- subprocess.call("명령어")
os 모듈을 이용하는 것은 실행한 명령이 종료되기 전까지는 메모리에 상주한다.
(콘솔 입력창에서 명령어를 입력하는 것과 같은 동작을 한다.)
subprocess를 통해 실행한 명령은 python 프로세스에 자식 프로세스로 귀속된다.
subprocess.call은 귀속된 프로세스가 직접 명령어를 실행해주고
os 모듈은 쉘을 통해 명령을 수행한다.
윈도우에서 완전히 별도의 프로그램으로 깔끔하게 실행하고 싶다면
Windows API인 ShellExecuteA 나 ShellExecuteEx 메소드를 추천한다.
(파이썬에서는 ctypes 모듈을 이용하여 사용할 수 있음)
그러나 출력 결과에 따라 연쇄적으로
다른 명령을 실행하고 싶다면 콘솔 입출력 시뮬레이터
python expect 를 쓰면 된다.
커맨드라인을 파이썬 내에서 시뮬레이션 할 수 있다.
간단한 명령 한두줄 실행시:
pexpect.run('명령어')