콘텐츠로 건너뛰기

서브프로세스 실행 방법과 오류 해결 방법을 간단히 설명: subprocess run

[

The subprocess 모듈: 파이썬을 사용한 프로그램 래핑

이안 커리에 의해 작성 중급 레벨

파이썬 subprocess 모듈은 명령 줄 스크립팅을 단순화하거나 명령 줄 응용 프로그램뿐만 아니라 어떤 응용 프로그램과도 함께 파이썬을 사용하고자 한다면 도움이 될 수 있습니다. 셸 명령 실행, 명령 줄 응용 프로그램 실행 및 GUI 응용 프로그램 시작까지 파이썬 subprocess 모듈은 도움을 줄 수 있습니다.

이 자습서의 끝까지 따라오면 다음을 할 수 있게 됩니다:

  • 파이썬 subprocess 모듈이 운영 체제와 상호 작용하는 방식 이해하기
  • ls 또는 dir과 같은 셸 명령 실행하기
  • 프로세스에 입력 제공하고 출력 사용하기
  • subprocess를 사용할 때 오류 처리하기
  • 실제 예제를 고려하여 subprocess사용 사례 이해하기

이 자습서에서는 subprocess 모듈을 시작하기 전에 프로세스, 서브 프로세스 및 파이썬을 이해하기 위한 상위 수준의 이해 모델을 얻은 다음 예제로 실험하고 subprocess 모듈을 살펴보게 될 것입니다. 그 후에는 셸을 탐색하고 Windows 및 UNIX 기반의 쉘과 시스템에서 파이썬의 subprocess를 활용하는 방법을 배우게 됩니다. 특히 프로세스와의 통신, 파이프 및 오류 처리에 대해 알아볼 것입니다.

참고: subprocess는 GUI 자동화 모듈이나 동시성 달성 방법이 아닙니다. GUI 자동화를 위해서는 PyAutoGUI를 살펴보는 것이 좋습니다. 동시성을 위해서는 이 자습서의 subprocess와 관련된 모듈 섹션을 참조하십시오.

기본 사항을 익힌 후에는 파이썬을 활용하는 몇 가지 실용적인 아이디어를 탐구하게 될 것입니다.

처리 및 서브프로세스

운영 체제와 프로세스

  • 컴퓨터의 운영 체제는 실행 중인 여러 프로세스를 관리합니다.
  • 각 프로세스는 운영 체제의 활성 프로세스로 표현됩니다.
  • 각 프로세스는 고유한 식별자인 프로세스 ID(PID)와 연결됩니다.

프로세스 생명주기

  • 프로세스의 생명주기에는 다음 단계가 있습니다:
    1. 생성(Created): 프로세스가 생성되고 리소스가 할당됩니다.
    2. 실행(Running): 프로세스가 실행되고 CPU에 바운드됩니다.
    3. 중지(Terminated): 프로세스가 종료되고 리소스가 해제됩니다.

시스템에서 실행 중인 활성 프로세스

  • 현재 시스템에서 실행 중인 활성 프로세스를 확인할 수 있습니다.

파이썬 subprocess 모듈 개요

  • 파이썬의 subprocess 모듈은 다른 프로그램과 상호 작용할 수 있는 강력한 도구입니다.
  • subprocess 모듈은 다른 프로그램을 실행하고 그와 통신할 수 있도록 도와줍니다.
  • subprocess 모듈은 서브프로세스 생성, 입출력 관리, 오류 처리 등의 작업을 수행할 수 있습니다.

파이썬 subprocess 모듈의 기본 사용법

Timer 예제

  • subprocess를 사용하여 타이머 프로그램을 실행하는 예제입니다.

subprocess를 사용하여 어떤 앱도 실행하기

  • subprocess를 사용하여 어떤 응용 프로그램이든 실행할 수 있습니다.
  • 예제에서는 텍스트 편집기 애플리케이션을 실행하는 방법을 보여줍니다.

CompletedProcess 객체

  • CompletedProcess 객체를 사용하여 결과 및 상태 정보를 가져올 수 있습니다.
  • 예제에서는 완료된 프로세스의 출력을 확인하는 방법을 보여줍니다.

subprocess 예외 처리

CalledProcessError: 0이 아닌 종료 코드에 대한 예외

  • 0이 아닌 종료 코드를 반환하는 경우 CalledProcessError 예외가 발생합니다.

TimeoutExpired: 시간이 너무 오래 걸리는 프로세스에 대한 예외

  • 너무 오래 실행되는 프로세스에 대해 TimeoutExpired 예외가 발생합니다.

FileNotFoundError: 존재하지 않는 프로그램에 대한 예외

  • 존재하지 않는 프로그램을 실행하려고 할 때 FileNotFoundError 예외가 발생합니다.

예외 처리 예제

  • 예외 처리의 예를 보여주는 예제입니다.

셸과 텍스트 기반 프로그램 소개

셸과 subprocess의 사용 사례

  • 셸과 subprocess의 사용 사례에 대해 알아봅니다.

UNIX 기반 셸에서의 subprocess의 기본 사용법

  • UNIX 기반 셸에서 subprocess를 사용하는 기본적인 방법에 대해 알아봅니다.

Windows 셸에서의 subprocess의 기본 사용법

  • Windows 셸에서 subprocess를 사용하는 기본적인 방법에 대해 알아봅니다.

보안 경고

  • 셸을 사용할 때 특정 보안 상황에 유의해야 합니다.

프로세스와의 통신

표준 I/O 스트림

  • 프로세스와 통신하기 위해 표준 I/O 스트림을 사용할 수 있습니다.

Magic Number 생성기 예제

  • 표준 입출력을 사용하여 Magic Number 생성기를 실행하는 예제입니다.

표준 스트림의 디코딩

  • 표준 스트림의 디코딩을 수행하는 방법입니다.

Reaction Game 예제

  • 표준 입출력을 사용하여 Reaction Game을 실행하는 예제입니다.

파이프와 셸

파이프 소개

  • 파이프에 대한 소개입니다.

subprocess의 파이프

  • subprocess에서 파이프를 사용하는 방법에 대한 소개입니다.

run()을 사용한 파이프 시뮬레이션

  • run()을 사용하여 파이프를 시뮬레이션하는 방법에 대한 예제입니다.

실용적인 아이디어

  • 예제를 통해 새로운 프로젝트를 만드는 방법을 알아봅니다.

subprocess와 관련된 파이썬 모듈

  • subprocess와 관련된 파이썬 모듈에 대한 소개입니다.

Popen 클래스

Popen() 사용하기

  • Popen()을 사용하여 프로세스를 실행하는 방법에 대한 예제입니다.

파이프를 사용하여 두 프로세스 연결하기

  • 파이프를 사용하여 두 프로세스를 연결하는 방법에 대한 예제입니다.

프로세스와 동적으로 상호 작용하기

  • 프로세스와 동적으로 상호 작용하는 방법에 대한 예제입니다.

결론

이번 자습서를 통해 파이썬 subprocess 모듈을 사용하여 명령 줄 스크립트를 단순화하거나 다른 응용 프로그램과 함께 파이썬을 사용하는 방법에 대해 배웠습니다. 이제 실제 응용 프로그램에 적용할 수 있는 여러 가지 아이디어를 고려할 수 있게 되었습니다.

서브프로세스의 실행, 입출력 관리, 오류 처리 등의 작업에 대해 자세히 설명하고 있으며, 예제와 함께 단계별로 실행 가능한 코드와 설명을 제공합니다.