Python의 Subprocess.check_output

Manav Narula 2023년6월21일
Python의 Subprocess.check_output

subprocess 모듈은 Python의 필수적인 부분이며 병렬 프로그래밍을 달성하는 데 도움이 됩니다. 이 모듈은 새로운 프로세스를 생성하고 명령줄 도구를 사용하여 제어되는 프로그램과 함께 작동할 수 있습니다.

명령줄 도구를 통해 명령을 실행하는 데 도움이 되는 다양한 기능을 저장합니다. 그러한 함수 중 하나는 Python의 subprocess.check_output() 함수입니다.

이 튜토리얼은 파이썬의 subprocess.check_output() 함수를 보여줄 것입니다.

Python에서 subprocess.check_output() 사용

이 기능은 Python 2.7에서 도입되었습니다. Python에서 인수를 사용하여 명령 프롬프트에서 명령을 실행하는 데 사용할 수 있습니다.

subprocess.check_output() 함수는 주어진 명령의 출력을 바이트로 반환합니다. 함수가 0이 아닌 코드를 반환하면 CalledProcessError 개체가 발생합니다.

CalledProcessError 개체에는 두 가지 속성이 있습니다. 이들은 returncodeoutput 속성입니다.

이 기능의 간단한 예가 아래에 나와 있습니다.

import subprocess

print(subprocess.check_output(["echo", "Sample Message"], shell=False))

출력:

b'Sample Message\n'

메시지를 표시하는 위의 예에서 echo 명령을 실행합니다. 반환된 출력은 필수 메시지가 포함된 바이트열 문자열입니다.

이 함수와 관련된 여러 인수가 있습니다. 명령에서 볼 수 있듯이 함수에서 명령에 인수를 제공할 수 있습니다.

그 외에도 stdin, stderr, shelluniversal_newlines 인수도 있습니다.

처음 세 인수는 표준 입력, 출력 및 오류 파일 핸들입니다. 그 값을 PIPE 개체로 지정할 수 있습니다.

논의된 바와 같이 subprocess 모듈은 새로운 하위 프로세스를 생성합니다. PIPE 상수는 상위 프로세스에서 정보를 보내거나 받습니다.

shell 인수는 True 또는 False일 수 있습니다. True로 설정하면 명령이 쉘을 통해 실행됩니다.

그러나 Python을 통해 쉘을 통해 명령을 실행하는 것은 권장되지 않습니다. 이는 셸 주입과 같은 보안 위협을 일으킬 수 있는 신뢰할 수 없는 출처의 입력을 읽는 동안 심각한 보안 위험을 초래할 수 있습니다.

shell 인수가 True로 설정되어 있으면 pipes.quotes() 함수를 사용하여 전달된 문자열 내에서 쉘의 공백과 메타 문자를 이스케이프할 수 있습니다.

universal_newlines 인수가 True로 설정되면 표준 입력, 출력 및 오류로 제공된 개체가 텍스트 모드에서 열립니다. 다른 함수에서 text 인수의 이름을 가진 별칭과 함께 동일한 인수가 사용되었습니다.

Python 3.5에는 subprocess.run()이라는 새로운 함수가 도입되었습니다. 이 함수는 명령을 실행하는 기존의 subprocess.check_output() 메서드보다 인기를 얻었습니다. CompletedProcess 개체를 반환합니다.

subprocess.run() 함수는 또한 많은 인수를 취하며 대부분은 subprocess.check_output() 메서드에서 사용할 수 없습니다. 이러한 인수의 대부분은 인터페이스를 통해 전달됩니다.

작가: 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 Subprocess