다재다능한 언어인 파이썬은 시스템 명령을 실행하고 외부 프로그램을 실행하는 여러 가지 방법을 제공한다. 이 포스트에서는 os.system
, os.popen
및 subprocess
모듈의 사용에 중점을 두어 시스템 레벨 상호작용을 정밀하게 제어하는 방법을 설명한다.
os.system
명령을 사용하여 셸 명령을 직접 실행할 수 있다.
import os
exit_code = os.system('echo Hello, World!')
print("Exit code:", exit_code)
출력
Hello, World!
Exit code: 0
위 예제에서는 os.system
을 사용하여 echo
명령을 호출하고 있다. 종료 코드는 작업의 성공 여부에 대한 정보를 제공한다.
os.popen
함수를 사용하면 서브셸에서 명령을 실행하고 파일 인터페이스를 통해 읽기 또는 쓰기를 할 수 있다.
import os
file = os.popen('echo Hello, World!', 'r')
output = file.read()
print("Output:", output)
file.close()
출력
Output: Hello, World!
이 코드 스니펫은 os.popen
을 사용하여 명령의 출력을 변수로 읽어들이는 방법을 보여준다.
subprocess
모듈은 명령 실행 프로세스를 더욱 더 세밀하게 제어할 수 있다. subprocess.Popen
을 사용하면 명령을 실행하고 출력을 검색하며 프로세스를 더 유연하게 관리할 수 있다.
import subprocess
process = subprocess.Popen(['echo', 'Hello, World!'], stdout=subprocess.PIPE)
output, error = process.communicate()
print("Output:", output.decode())
출력
Output: Hello, World!
여기서 subprocess.Popen
을 사용하여 echo
명령을 실행하고 출력을 캡처하고 있다.
subprocess.call
과 subprocess.run
모두 셸 명령을 실행하는 편리한 방법이다. 사용 예를 통해 그 사용법을 확인해 보자.
# subprocess.call 사용
exit_code = subprocess.call(['echo', 'Using call'])
print("Exit code using call:", exit_code)
# subprocess.run 사용
result = subprocess.run(['echo', 'Using run'], stdout=subprocess.PIPE)
print("Output using run:", result.stdout.decode())
출력
Using call
Exit code using call: 0
Using run
Output using run: Using run
이러한 메서드는 명령을 보다 쉽게 실행할 수 있게 해주며, subprocess.run
은 Python 3.5 이상에서 더 많은 기능을 제공한다.
시스템 명령을 실행하고 외부 프로그램을 실행하는 것은 여러 자동화 및 통합 작업의 핵심 부분이다. 파이썬의 os
및 subprocess
와 같은 모듈의 유연성은 이러한 작업을 더욱 접근 가능하고 유지 관리 가능하게 만들어준다. os.system
, os.popen
또는 더 강력한 subprocess
메서드를 선택하는 것은 응용 프로그램의 특정 요구에 따라 다르다. 이러한 예제를 실험해 보면 기능을 이해하고 프로젝트에 적용하는 데 도움이 될 것이다.
os.system
과 subprocess
간의 주요한 차이점은 무엇인가?
os.system
은 더 간단하지만 덜한 제어를 제공하며, subprocess
는 더 많은 기능과 프로세스 제어를 제공한다.subprocess.Popen
과 subprocess.run
을 사용하면 표준 출력과 표준 오류 스트림을 모두 포착할 수 있다.[Python] 비트 연산자 다양한 예제를 통해 이해하기 |
---|
[Python] 관계 연산자 다양한 예제를 통해 이해하기 |
[Python] 'zsh: command not found: python' 오류 해결하기 |
[Python] 할당 연산자 다양한 예제를 통해 이해하기 |
[Python] 산술 연산자 다양한 예제를 통해 이해하기 |
CloneCoding
한 줄의 코드에서 시작되는 혁신!