본문 바로가기
카테고리 없음

파이썬 cmd 명령 실행법 총정리 (os system, subprocess, 명령어 자동화)

by 가치정보인 2025. 4. 2.
반응형

파이썬은 단순한 스크립트 언어를 넘어, 운영체제의 명령어(CMD 또는 Shell 명령어)를 직접 실행하는 데에도 탁월한 기능을 제공합니다. 특히 반복적인 작업 자동화, 파일 관리, 시스템 제어, 외부 프로그램 호출 등을 위해 cmd 명령어 실행 기능을 적극적으로 활용할 수 있습니다. 본 글에서는 os.system, subprocess.run, subprocess.Popen 등 주요 실행 방법과 함께 실무에 바로 활용 가능한 예제 코드를 정리해드립니다.

os.system 함수 - 가장 간단한 CMD 실행

os.system() 함수는 파이썬 내장 os 모듈을 이용해 가장 직관적으로 명령어를 실행할 수 있는 방법입니다. 사용하는 방식도 간단하여, 문자열로 명령어를 넘기기만 하면 됩니다. 다음은 기본 예제입니다:

import os
os.system("dir")

이 코드는 윈도우에서 현재 디렉터리의 파일 목록을 출력하는 명령어입니다. Linux나 Mac에서는 "ls" 명령어를 사용하면 됩니다.
os.system()은 명령어를 실행한 결과를 출력해주지만, 그 결과값(출력 내용)을 파이썬 내부에서 조작할 수는 없습니다. 단순 실행용으로는 충분하지만 결과 처리가 필요한 경우에는 subprocess 모듈이 더 적합합니다. 또한, 보안적인 이슈로 인해 외부에서 사용자 입력을 받을 때는 신중하게 사용해야 합니다.

subprocess.run - 결과까지 받아오는 방식

파이썬 3.5 이상에서는 subprocess.run()이 가장 많이 쓰이는 명령어 실행 방식입니다. 실행과 동시에 결과를 받아올 수 있어 실제 업무 자동화나 외부 프로그램 호출 시 자주 활용됩니다.

import subprocess

result = subprocess.run(["ping", "google.com"], capture_output=True, text=True)
print(result.stdout)

위 예제는 ping 명령어를 실행하고, 결과를 문자열로 받아서 출력합니다. capture_output=True 옵션은 표준 출력/오류 출력을 받아오는 역할을 하며, text=True는 결과를 바이트가 아닌 문자열 형태로 변환해줍니다.
subprocess.run()은 오류가 발생했을 경우 예외를 발생시킬 수도 있으므로, try-except 구문을 통해 안정성을 높일 수 있습니다. 결과 코드를 확인하고 조건 처리도 가능하기 때문에 실무에서 가장 많이 사용하는 방식입니다.

subprocess.Popen - 실시간 제어 및 고급 활용

subprocess.Popen은 가장 유연하고 실시간 제어가 가능한 명령 실행 방법입니다. 명령 실행 후 출력 결과를 실시간으로 처리하거나, 비동기적으로 여러 명령을 실행해야 할 경우에 매우 유용합니다.

import subprocess

process = subprocess.Popen(["ping", "google.com"], stdout=subprocess.PIPE, text=True)

for line in process.stdout:
    print(line.strip())

이 방식은 결과를 한 줄씩 읽으며 출력할 수 있기 때문에 로그 실시간 출력, 외부 명령어 상태 모니터링 등에 자주 사용됩니다.
또한 stdin, stderr 도 동시에 제어 가능하며, 여러 프로세스를 병렬로 실행하거나 중간에 종료하는 등의 작업에도 활용됩니다. 다만 초보자에게는 진입 장벽이 조금 있을 수 있습니다.
최근에는 asyncio와 결합하여 비동기 처리를 하는 방식도 많이 사용되고 있습니다.

파이썬에서 CMD 명령어를 실행하는 방식은 단순한 자동화를 넘어서 시스템을 제어하는 강력한 도구가 됩니다. os.system은 단순 실행에, subprocess.run은 결과 처리에, Popen은 실시간 통제에 적합합니다. 지금 바로 파이썬 코드로 명령어를 실행해보며 자동화의 재미를 느껴보세요!

반응형