문제

나는 메시지를 받았다 script xyz.py returned exit code 0. 이것은 무엇을 의미 하는가?

파이썬의 출구 코드는 무엇을 의미합니까? 몇 명이 있습니까? 어느 것이 중요합니까?

도움이 되었습니까?

해결책

스크립트에서 찾고있는 것은 전화입니다. sys.exit(). 해당 방법에 대한 인수는 종료 코드로 환경으로 반환됩니다.

스크립트가 출구 메소드를 호출하지 않을 가능성이 높으며 0은 기본 종료 코드 일 가능성이 높습니다.

다른 팁

에서 문서 sys.exit:

선택적 인수 Arg는 종료 상태를 제공하는 정수 (0으로 기본값) 또는 다른 유형의 객체 일 수 있습니다. 정수 인 경우 0은 "성공적인 종료"로 간주되며 0이 아닌 값은 쉘 등에 의해 "비정상 종료"로 간주됩니다. 대부분의 시스템은 0-127의 범위에 있어야하며 그렇지 않으면 정의되지 않은 결과를 생성해야합니다. 일부 시스템에는 특정 종료 코드에 특정 의미를 할당하기위한 규칙이 있지만 일반적으로 저개발됩니다. UNIX 프로그램은 일반적으로 명령 줄 구문 오류에 대해 2를 사용하고 다른 모든 종류의 오류는 1을 사용합니다.

종료 코드가 사용되는 예 중 하나는 쉘 스크립트에 있습니다. Bash에서는 특수 변수를 확인할 수 있습니다 $? 마지막 종료 상태 :

me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43

개인적으로 나는 내가 찾은 출구 코드를 사용하려고 노력합니다. /usr/include/asm-generic/errno.h (Linux 시스템에서) 그러나 이것이 옳은 일인지 모르겠습니다.

있습니다 errno 표준 종료 코드를 정의하는 모듈 :

예를 들어, 허가 거부 오류 코드입니다 13:

import errno, sys

if can_access_resource():
    do_something()
else:
    sys.exit(errno.EACCES)

레코드의 경우 정의 된 POSIX 표준 종료 코드를 사용할 수 있습니다. 여기.

예시:

import sys, os

try:
    config()
except:
    sys.exit(os.EX_CONFIG) 
try:
    do_stuff()
except:
    sys.exit(os.EX_SOFTWARE)
sys.exit(os.EX_OK) # code 0, all ok

0의 종료 코드는 일반적으로 "여기서 잘못된 것은 없다"는 것을 의미합니다. 그러나 스크립트의 프로그래머가 컨벤션을 따르지 않았다면 그 의미를 확인하려면 소스를 참조해야 할 수도 있습니다. 일반적으로 0이 아닌 값은 오류 코드로 반환됩니다.

운영 체제 명령에는 종료 코드가 있습니다. 찾다 리눅스 종료 코드 이것에 대한 자료를 보려면. 쉘은 출구 코드를 사용하여 프로그램이 작동했거나 문제가 있었는지 또는 실패했는지 결정합니다. 표준 (또는 적어도 일반적으로 사용되는) 종료 코드를 만들기위한 노력이 있습니다. 이것 좀 봐 고급 쉘 스크립트 전기.

당신이 휴대용으로 사용하려면 표준 posix 종료 코드, 참조 Exitstatus PYPI에 패키지.

패키지 설치 :

pip install exitstatus

코드에서 사용 :

import sys
from exitstatus import ExitStatus

sys.exit(ExitStatus.success)

종료 코드는 스크립트 작성자가 할당 한 의미 만 있습니다. 유닉스 전통은 출구 코드 0이 '성공'을 의미하며 다른 것은 실패라는 것입니다. 주어진 스크립트의 종료 코드가 무엇을 의미하는지 확인하는 유일한 방법은 스크립트 자체를 검사하는 것입니다.

대답은 "종료 코드 제로가 무엇을 의미하는지에 따라 다릅니다"입니다.

그러나 대부분의 경우 이것은 "모든 것이 괜찮다"는 것을 의미합니다.


나는 posix를 좋아한다 :

그래서, 쉘에 나는 다음을 입력 할 것이다.

python script.py && echo 'OK' || echo 'Not OK'

내 파이썬 스크립트가 호출되는 경우 sys.exit(0) 쉘은 'OK'를 반환합니다.

내 파이썬 스크립트가 호출되는 경우 sys.exit(1) (또는 0이 아닌 정수), 쉘은 'Not Ok'을 반환합니다.

쉘로 영리 해지고 종료 코드의 의미를 확인하기 위해 스크립트의 문서 (또는 소스)를 읽는 것이 귀하의 임무입니다.

sys.exit ()를 사용하지 않고 Exit (0) 내장 된 깨끗한 셧다운을 권장합니다.

이것이 좋은 조언인지 확실하지 않습니다.

바로 언급 된 문서 읽기 :

사이트 모듈 (-S 명령 줄 옵션이 제공되는 경우를 제외하고 시작 중에 자동으로 가져 오면)은 내장 네임 스페이스에 여러 상수를 추가합니다. 대화식 통역사 쉘에 유용합니다 프로그램에 사용해서는 안됩니다.

그 다음에:

종료 (코드 = 없음)

인쇄 할 때 "Quit () 또는 Ctrl-D (예 : EOF)와 같은 메시지를 인쇄하여 종료 할 때 지정된 종료 코드를 사용하여 SystemExit을 높이는 개체.

우리가 그것을 비교한다면 sys.exit () 문서, 그것은 동일한 메커니즘을 사용하고 있습니다. SystemExit 예외.

많은 프로그래밍 언어의 종료 코드는 프로그래머에게 달려 있습니다. 따라서 프로그램 소스 코드 (또는 매뉴얼)를 살펴 봐야합니다. 제로는 일반적으로 "모든 것이 잘 진행되었습니다"를 의미합니다.

예외 처리기 및 기타 항목을 실행할 수 있도록 exit(0) 사용하기보다는 내장 sys.exit() 이 과정이 갑자기 종료됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top