`subprocess`는 파이썬에서 새로운 프로세스를 생성하고, 그들의 입력/출력/오류 파이프를 연결하며, 반환 코드를 얻는 기능을 제공하는 모듈입니다. 이 모듈은 `os.system`과 같은 이전의 모듈과 함수를 대체하기 위해 설계되었습니다. `subprocess`를 사용하면 외부 명령어를 실행하고, 그 결과를 파이썬 프로그램에서 쉽게 처리할 수 있습니다.
subprocess 모듈의 주요 메소드
- subprocess.run(): 외부 명령어를 실행하고, 완료될 때까지 기다립니다. 가장 일반적인 사용법입니다.
- subprocess.Popen(): 더 복잡한 프로세스 생성 및 관리가 필요할 때 사용합니다. 비동기적으로 프로세스를 실행할 수 있습니다.
- subprocess.call(): 외부 명령어를 실행하고, 완료될 때까지 기다린 후 반환 코드를 반환합니다.
- subprocess.check_call(): 외부 명령어를 실행하고, 실패할 경우 예외를 발생시킵니다.
- subprocess.check_output(): 외부 명령어를 실행하고, 그 출력을 반환합니다.
사용 예시
1. subprocess.run() 사용 예시
```python
import subprocess
# 'ls' 명령어를 실행하고 결과를 출력
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
```
- 위 코드는 현재 디렉토리의 파일 목록을 출력합니다.
2. subprocess.Popen() 사용 예시
```python
import subprocess
# 'ping' 명령어를 비동기적으로 실행
process = subprocess.Popen(['ping', 'google.com'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 결과를 읽어오기
stdout, stderr = process.communicate()
print(stdout.decode())
```
- 이 코드는 구글에 핑을 보내고 그 결과를 출력합니다.
3. subprocess.check_output() 사용 예시
```python
import subprocess
# 'echo' 명령어를 실행하고 결과를 출력
output = subprocess.check_output(['echo', 'Hello, World!'])
print(output.decode())
```
- 위 코드는 "Hello, World!"를 출력합니다.
보안 고려사항
- `shell=True`를 사용할 경우, 쉘 주입 공격에 취약할 수 있으므로 주의해야 합니다. 외부 입력을 직접 사용하지 않도록 하세요.
`subprocess` 모듈은 외부 프로세스를 관리하는 데 매우 유용하며, 다양한 메소드를 통해 필요에 따라 유연하게 사용할 수 있습니다. 이 모듈을 통해 파이썬에서 시스템 명령어를 쉽게 실행하고 결과를 처리할 수 있습니다.
더 자세한 정보는 Python 공식 문서에서 확인할 수 있습니다.
이런 자료를 참고했어요.
[1] 파이썬/라이브러리/subprocess (https://incodom.kr/%ED%8C%8C%EC%9D%B4%EC%8D%AC/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/subprocess)
[2] subprocess — 서브 프로세스 관리 — Python 3.9.20 문서 (https://docs.python.org/ko/3.9/library/subprocess.html)
[3] [Python] subprocess 모듈 사용법 및 예제 - A6K 개발노트 (https://hbase.tistory.com/341)
[4] Subprocess management (https://docs.python.org/ko/3/library/subprocess.html)
[5] [Python subprocess - 2] 파이썬에서 외부 프로세스 실행 및 ... (https://m.blog.naver.com/sagala_soske/222131400371)
[6] [Python] subprocess 모듈 사용법 및 예제 - A6K 개발노트 (https://hbase.tistory.com/341)
[7] 파이썬/라이브러리/subprocess (https://incodom.kr/%ED%8C%8C%EC%9D%B4%EC%8D%AC/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC/subprocess)
[8] Subprocess management (https://docs.python.org/ko/3/library/subprocess.html)
[파이썬] pyserial라이브러리에 대해서_뤼튼AI (2) | 2024.10.24 |
---|---|
방송대_유비쿼터스컴퓨팅개론 정리하기 (0) | 2023.01.07 |
[DAY0]HTML+CSS+JS 온라인 스터디 1기 _책 구입 인증 및 다짐 (0) | 2022.12.08 |
하루 만에 채팅 앱 만들기 _라이프해킹스쿨 강의 수강 (0) | 2022.11.26 |
[3강. JSP개요]JSP프로그래밍 _예제모음 (0) | 2022.11.19 |