반응형
Python에서 실행중 추가로 프로그램을 실행해야 하는 경우가 발생할 경우 subprocess 모듈을 이용해서 사용할 수 있다.
아마 이모듈을 사용할 때 가장 많은 찾아보게 되는 부분이 Popen과 Call의 차이 그리고 WorkDirectory 변경일 것 같다.
그럼 핵심만 간단히 정리해 보자.
Popen 과 call의 차이점
Popen과 call의 가장 큰 차이점은 바로 결과를 기다릴 수 있는 구조인가 이다.
실제로 call은 Popen을 감싼 구조라고 할 수 있다. 즉 Popen으로 실행한 프로그램을 실행을 기다렸다가, 실행이 완료되었을 때 결과를 받을 수 있는 것이 call인것이다.
따라서 실행 결과를 기다릴 필요가 없다면, Popen을 사용하고, 실행 결과를 대기하였다가 확인해야 하는 경우 call을 사용해야 한다.
물론 Popen에도 wait 함수를 통해서 실행 결과를 대기하여 확인 할 수 있다.
returncode = call(*args, **kwargs)
returncode = Popen(*args, **kwargs).wait()
WorkDirectory 변경
다음은 현재 실행 위치를 변경하는 것이다.
특정 프로그램을 실행할 때 프로그램의 경로에 따라 읽어드리는 모듈이나 상대 파일의 경로가 달라지기 때문에 프로그램의 실행경로인 WorkDirectory는 매우 중요하다. Python3 부터는 cwd라는 옵션을 통해 프로그램의 실행 경로를 설정할 수 있다.
>>> subprocess.call(["ls"], cwd="/Users/")
반응형
'Python' 카테고리의 다른 글
Python - 리소스 및 코드 하나로 실행, Single-file executables (0) | 2024.03.03 |
---|---|
Python - sqlalchemy bigint를 id 값으로 사용해야 하는 이유 (0) | 2024.03.03 |
Python - Http Retry 및 while 을 통한 재시도하기 (0) | 2024.03.03 |
Python - string 문자열 원하는 구분자 기준으로 나누기 (0) | 2024.03.03 |
Python - 백그라운드/포그라운드 실행 유무 체크 (0) | 2024.03.03 |