본문 바로가기
프로그래밍언어/파이썬[중급]

[파이썬][중급] Chapter42. subprocess로 외부 명령 실행

by about_IT 2025. 5. 24.
728x90

파이썬에서 외부 프로그램이나 시스템 명령어를 실행하고 결과를 가져오기 위해서는 subprocess 모듈을 사용합니다. 이 모듈은 시스템 명령을 파이썬에서 자동화하거나, 외부 유틸리티와 상호작용할 때 유용합니다.


● 간단한 명령 실행

import subprocess

subprocess.run(["ls", "-l"])

subprocess.run()은 명령을 실행하고 완료될 때까지 기다립니다. 리스트 형식으로 명령과 인자를 나누어 전달해야 합니다.


● 명령 실행 결과 가져오기

result = subprocess.run(["echo", "Hello"], capture_output=True, text=True)
print(result.stdout)  # Hello

capture_output=True를 설정하면 표준 출력과 표준 에러를 가져올 수 있습니다. text=True를 추가하면 바이너리가 아닌 문자열로 출력됩니다.


● 명령 실패 감지

try:
    subprocess.run(["false"], check=True)
except subprocess.CalledProcessError:
    print("명령 실행 실패")

check=True는 명령어가 0이 아닌 종료 코드로 종료될 경우 예외를 발생시킵니다.


● 표준 입력 전달

proc = subprocess.run(["python3"], input="print(3+4)", text=True, capture_output=True)
print(proc.stdout)  # 7

표준 입력도 input 파라미터를 통해 전달할 수 있습니다. 이는 인터프리터나 REPL 등과의 연동에 유용합니다.


● 셸 명령 실행

subprocess.run("echo $HOME", shell=True)

shell=True를 설정하면 셸을 통해 명령어를 실행할 수 있습니다. 다만 보안 위험이 있으므로 사용자 입력을 포함할 때는 주의해야 합니다.


● 마무리

subprocess는 외부 환경과의 통합이나 시스템 자동화를 구현할 때 필수적인 모듈입니다. 특히 로그 분석, 배치 스크립트 실행, 셸 명령 자동화 등 다양한 상황에서 활용될 수 있으며, 적절한 예외 처리와 입출력 제어도 함께 고려해야 합니다.

728x90