파이썬, 외부 명령 호출

반응형

방법

파이썬 스크립트에서 외부 명령 유닉스 쉘이나 윈도우 명령 프롬프트에서 입력 한 것처럼 호출 하려면 어떻게 해야 될까? 이에 대한 답변은 다음과 같다.

표준 라이브러리에서 서브 프로세스 모듈을 먼저 봐야한다.

import subprocess
subprocess.run(["ls", "-l"])

서브 프로세스 모듈은 새로운 프로세스를 생성하고 결과를 검색 할 수 있는 어떤 기능 보다 강력한 기능을 제공한다. 하지만, 이 기능을 사용하는 것보다 해당 모듈을 사용하는 것이 더 좋다. os.system() 파이썬 공식 문서의 이전 프로세스를 서브 프로세스 모듈로 대체 하는 섹션에는 서브 프로세스의 유용한 예시가 있다. 

 

3.5 이전의 파이썬 버전의 경우 Call 다음을 사용한다.

import subprocess
subprocess.call(["ls", "-l"])

 

다음은 외부 명령을 호출하는 방법과 각각의 장단점을 몇가지 요약 한 것이다.

os.system("some_command with args") 명령과 인수를 시스템 명령 프롬프트에 전달한다. 이 방법으로 실제 여러 명령을 한 번에 실행하고 파이프 및 입 출력 리디렉션을 설정할 수 있기 때문에 좋다. 예를 들면 다음과 같다. 

os.system("some_command < input_file | another_command > output_file")  

이 방법은 편리하지만 문제가 있다. 공백과 같은 쉘 문자의 이스케이프 처리를 수동으로 처리해야한다. 

 

stream = os.popen("some_command with args")os.system 해당 프로레스의 표준 입 출력에 액세스하는데 사용할 수 있는 파일과 유사한 객체를 제공한다는 점을 제외하고는 동일한 작업을 수행한다. 모두 다른 방식으로 I/O 를 처리하는 3가지의 POPEN 이 있다. 모든 것을 문자열로 전달하면 명령이 셀로 전달됩니다. 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유