Python에서 외부 프로그램 호출

Manav Narula 2023년1월30일
  1. os.system()함수를 사용하여 Python에서 외부 시스템 명령 실행
  2. os.popen()함수를 사용하여 Python에서 외부 시스템 명령 실행
  3. subprocess.Popen()함수를 사용하여 Python에서 외부 시스템 명령 실행
  4. subprocess.call()함수를 사용하여 Python에서 외부 시스템 명령 실행
  5. subprocess.run()함수를 사용하여 Python에서 외부 시스템 명령 실행
Python에서 외부 프로그램 호출

Python에는 OS에서 통신하고 응답을받는 데 사용할 수있는 다양한 모듈과 함수가 있습니다. 파이썬에는 외부 프로그램을 실행할 수있는 메서드도 있습니다.

이 자습서에서는 Python에서 외부 프로그램을 호출하는 방법에 대해 설명합니다.

os.system()함수를 사용하여 Python에서 외부 시스템 명령 실행

Python의os모듈은 장치의 OS와 상호 작용할 수 있으며 셸 명령을 실행하는 데 사용할 수있는 기능이 있습니다. system()함수는 서브 쉘에서 문자열로 전달 된 명령을 구현합니다. 주어진 명령을 실행 한 후 OS가 반환하는 쉘의 종료 상태를 반환합니다. 한 번에 여러 명령을 실행하고 쉘 명령이 아닌 외부 프로그램을 호출 할 수 있습니다.

예를 들면

import os

os.system("echo Hello World")

os.popen()함수를 사용하여 Python에서 외부 시스템 명령 실행

os모듈에서 외부 프로그램 명령을 실행하는 또 다른 기능은popen()함수입니다. 이 방법은 명령과 관련된 파이프를 엽니 다. os.system()함수와 유사하지만 명령과 관련된 입출력 작업에 도움이되는 파일 유형 객체를 제공합니다. 함수의 매개 변수로 파일의 파일 모드와 buff-size를 지정할 수 있습니다.

예를 들면

import os

os.popen("echo Hello World")

Python 2에는 4 가지 유형의popen()함수가 있습니다. 이들 사이의 차이점은이 4 가지 함수의 출력에 있습니다.

subprocess.Popen()함수를 사용하여 Python에서 외부 시스템 명령 실행

subprocess모듈은os모듈과 유사하며 외부 프로그램을 호출하기위한 개선 된 기능과 메소드가 있습니다. Popen은 메소드가 아니라 클래스입니다. 필요한 명령과 함께 지정해야하는 다양한 매개 변수로 인해 이것을 사용하는 것은 약간 복잡합니다. 4 개의os.popen()함수를 모두 하나로 결합합니다. 또한 외부 프로그램을 별도의 프로세스로 실행합니다. 다음 코드는이를 사용하는 방법을 보여줍니다.

import subprocess

subprocess.Popen("echo Hello World", shell=True, stdout=subprocess.PIPE).stdout.read()

subprocess.call()함수를 사용하여 Python에서 외부 시스템 명령 실행

call()함수는popen()함수를 개선 한 것입니다. 그러나popen()함수와 달리 리턴 코드를 제공하기 전에 명령이 실행되기를 기다립니다. 함수에 대한 인수로 명령을 전달합니다.

예를 들면

import subprocess

subprocess.call("echo Hello World", shell=True)

subprocess.run()함수를 사용하여 Python에서 외부 시스템 명령 실행

Python v3.5 이상에서는run()함수가 프로그램 명령 실행에 더 자주 사용됩니다. 명령을 실행 한 후 completed-process 개체를 반환하고 함수에 매개 변수로 전달합니다.

예를 들면

import subprocess

print(subprocess.run("echo Hello World", shell=True))

subprocess모듈은 Python에서 외부 명령을 실행하기 위해os모듈보다 선호됩니다.

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python Process