>

다음 명령 ( "python --version")의 출력이 표준 출력 대신 표준 오류가 발생하는 이유를 설명해 주시겠습니까?

import shlex, subprocess
cmd = subprocess.Popen(shlex.split("git --version"), stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=False)
std_out, std_err = cmd.communicate()
print("std_out: {}".format(std_out))
print("std_err: {}".format(std_err))
cmd = subprocess.Popen(shlex.split("python --version"), stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=False)
std_out, std_err = cmd.communicate()
print("std_out: {}".format(std_out))
print("std_err: {}".format(std_err))

이것이 인쇄되는 것입니다 :

std_out: git version 2.19.2
std_err: 
std_out: 
std_err: Python 2.7.15

파이썬을 처음 접했는데 왜 위의 시나리오에서 다르게 작동하는지 잘 모르겠습니다. 감사합니다.

  • 답변 # 1

    코드에 문제가 없습니다. 다른 결과는 두 프로그램이 (적어도) 해당 명령에 대해 다른 출력 채널을 사용하기 때문입니다. 특히 git 처럼 보입니다.   stdout 를 사용하고 있습니다 python 동안   stderr 를 사용하고 있습니다 .

    하나의 프로그램이 어떤 채널을 사용하는지 교차 확인하기 위해이 답변에 표시된 접근 방식을 사용할 수 있습니다.

관련 자료

  • 이전 r - 키 열이있는 목록을 만드는 방법은 무엇입니까?
  • 다음 sql - 주별 최초 가입자 수 계산