python 실행 셸 명령으로 되돌아오는 값을 가져올 수 없는 문제 해결
python에서 셸 명령을 실행한 후 반환할 수 있는 몇 가지 방법:
# 1.os
ret = os.popen("supervisorctl status")
ret_data = ret.read()
# 2.subprocess
ret = subprocess.Popen('supervisorctl status',shell=True,stdout=subprocess.PIPE)
out,err = ret.communicate()
# 3.commands
ret_data = commands.getoutput("supervisorctl status")
# commands.getstatusoutput()
처음에 프로그램이 사용한 것은 os였다.popen () 방법은 상호작용적인python 셸이나 IDE 환경에서 상기 방법을 사용하면 실행된 반환 값을 얻을 수 있지만, 스크립트를 사용하여 실행할 때 반환 값이 비어 있음을 발견하고command로 수정합니다.getoutput () 방법, "sh:supervisorctl:command not found"로 되돌아오는 값을 가져옵니다.이로써 알 수 있듯이 명령을 실행할 때supervisorctl 명령을 식별할 수 없지만 시스템에supervisor가 설치되어 있기 때문에 whichsupervisorctl로 supervisorctl 경로를 보고 경로를 가진 방식으로 명령어'/usr/local/bin/supervisorctlstatus'를 실행하여 반환값을 얻는 데 성공했습니다.
요약:
python은 셸 명령을 사용하여 비시스템 자체 도구를 조작할 때 도구 경로를 가져오는 것이 좋습니다.
보충 지식:python은 호출 시스템 명령의 실행 여부를 어떻게 판단합니까
먼저 시스템 명령을 호출하는 방법을 알아야 합니다.
>>> os.system('ls')
anaconda-ks.cfg install.log.syslog
install.log
0
>>>
>>> os.system('lss')
sh: lss: command not found
32512
>>>
\첫 번째, 우리는 육안으로 정확하게 0이 되돌아온다는 것을 식별할 수 있고, 잘못된 것은 0이 아니다\두 번째, if를 사용하여 호출 시스템 명령 반환 값이 0인지 여부를 판단합니다. 만약 0이면 출력하지 않고, 0이면 "Without the command"를 출력합니다.
오류 -------------------------------
>>> if os.system('lss') !=0:print 'Without the command'
...
sh: lss: command not found
Without the command
정확하다
>>> if os.system('ls') !=0:print 'Without the command'
...
anaconda-ks.cfg install.log.syslog
install.log
>>>
이상python이 셸 명령을 실행하여 되돌아오는 값을 얻을 수 없는 문제를 해결하는 것은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고해 주시고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.