Python에서 외부 프로그램 호출
-
os.system()
함수를 사용하여 Python에서 외부 시스템 명령 실행 -
os.popen()
함수를 사용하여 Python에서 외부 시스템 명령 실행 -
subprocess.Popen()
함수를 사용하여 Python에서 외부 시스템 명령 실행 -
subprocess.call()
함수를 사용하여 Python에서 외부 시스템 명령 실행 -
subprocess.run()
함수를 사용하여 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 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