본문 바로가기
Python/Python FAQ

Python 프로그램을 실행하거나 시스템 명령을 호출하는 방법은 무엇인가요?, How do I execute a program or call a system command?

by 베타코드 2023. 5. 4.
반응형

질문


프로그램을 실행하거나 시스템 명령을 호출하는 방법은 무엇인가요?

Python에서 쉘 또는 명령 프롬프트에 입력한 것처럼 외부 명령을 호출하는 방법은 무엇인가요?


답변


subprocess 모듈을 사용합니다. 이 모듈은 표준 라이브러리에 포함되어 있습니다:

import subprocess

# 간단한 명령어의 경우
subprocess.run(["ls", "-l"]) 

# 복잡한 명령어의 경우, 많은 인수를 사용하는 경우, 문자열 + `shell=True`을 사용합니다:
cmd_str = "ls -l /tmp | awk '{print $3,$9}' | grep root"
subprocess.run(cmd_str, shell=True)

subprocess.runos.system보다 더 유연합니다. (stdout, stderr, 실제 상태 코드, 더 나은 오류 처리, 실행 파일 경로에 있는 폴더 이름에 공백이 있어 발생하는 문제 등을 방지할 수 있습니다.)

os.system의 문서에서도 subprocess를 사용하는 것을 권장합니다:

새 프로세스를 생성하고 결과를 검색하기 위한 더 강력한 기능을 제공하는 subprocess 모듈이 있습니다. 이 모듈을 사용하는 것이 이 함수를 사용하는 것보다 우수합니다. subprocess 문서의 이전 함수를 subprocess 모듈로 대체 섹션에서 유용한 레시피를 확인할 수 있습니다.

Python 3.4 이전 버전에서는 .run 대신 subprocess.call을 사용합니다:

subprocess.call(["ls", "-l"])
반응형

댓글