쉘 명령어 실행 및 출력 캡처하기
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
라는 에러가 발생합니다. 이 에러를 잡아내려면 try
와 except
를 사용하세요.
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 라이센스를 따릅니다.