포스트

쉘 명령어 실행 및 출력 캡처하기

Python에서 subprocess 모듈 사용하기

Python에서 외부 쉘 명령어를 실행하고 그 결과를 캡처하려면 subprocess 모듈을 사용할 수 있습니다. 이 모듈은 외부 명령을 실행하고, 그 결과를 프로그램 내에서 활용할 수 있도록 도와줍니다.

기본적인 사용법

subprocess.run 함수를 이용하면 간단하게 외부 명령을 실행할 수 있습니다.

1
2
3
4
import subprocess

completed_process = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(completed_process.stdout)

위의 코드는 ls -l 명령을 실행하고 그 결과를 캡처하여 출력합니다.

중요한 옵션들

  • capture_output=True: 명령어의 출력을 캡처합니다.
  • text=True: 출력을 텍스트 형태로 받습니다. 이 옵션이 없으면 바이트 형태로 출력됩니다.
  • timeout: 명령어의 최대 실행 시간을 설정합니다. 시간이 초과하면 오류가 발생합니다.

Error Handling

코드 실행 중에 문제가 발생하면, CalledProcessError라는 에러가 발생합니다. 이 에러를 잡아내려면 tryexcept를 사용하세요.

1
2
3
4
try:
    completed_process = subprocess.run(['ls', '-l'], check=True, capture_output=True, text=True)
except subprocess.CalledProcessError as e:
    print(f"오류 발생: {e}")

check=True 옵션은 명령어 실행에 문제가 있을 경우 에러를 발생시킵니다.

정리

subprocess 모듈은 Python에서 외부 쉘 명령어를 실행하고 그 출력을 캡처하는 데 매우 유용합니다. 여러 옵션들을 통해 출력 형태, 타임아웃, 에러 처리 등을 세밀하게 설정할 수 있습니다. 이러한 기능을 활용하면 Python 코드 내에서 다양한 시스템 작업을 효율적으로 수행할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.