ProgramingTip

주요 getoutput () 하위 프로세스에서 해당

bestdevel 2020. 12. 7. 20:28
반응형

주요 getoutput () 하위 프로세스에서 해당


이 질문에 이미 답변이 있습니다.

내가 좋아하는 몇 가지 쉘급의 출력을 얻으려면 lsdf제공합니다. 그보고 commands.getoutput('ls')받지 않고 subprocess.call('ls')오직 나에게 리턴 코드를받을 것입니다.

몇 가지 간단한 해결 방법이 있기를 바랍니다.


subprocess.Popen 사용 :

import subprocess
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE)
out, err = process.communicate()
print(out)

프로세스가 종료 될 때까지 통신이 차단됩니다. 종료하기 전에 출력이 필요한 경우

process.stdout.readline ()을 사용할 수 있습니다 . 자세한 내용은 설명서를 참조하십시오 .


Python> = 2.7의 경우 subprocess.check_output().

http://docs.python.org/2/library/subprocess.html#subprocess.check_output


subprocess.check_output()사용 하여 오류를 발생 시키십시오 CalledProcessError. 출력을 사용하는 것이 좋습니다.

# \return String of the output, stripped from whitespace at right side; or None on failure.
def runls():
    import subprocess
    try:
        byteOutput = subprocess.check_output(['ls', '-a'], timeout=2)
        return byteOutput.decode('UTF-8').rstrip()
    except subprocess.CalledProcessError as e:
        print("Error in ls -a:\n", e.output)
        return None

참고 URL : https://stackoverflow.com/questions/6657690/python-getoutput-equivalent-in-subprocess

반응형