Python 종료 코드
라는 메시지를 받았습니다.script xyz.py returned exit code 0
.이것은 무엇을 의미합니까?
Python의 exit code는 무엇을 의미합니까?몇 개 있어요?어떤 것이 중요합니까?
이 스크립트에서 에 대한 콜을 찾고 있습니다.이 메서드에 대한 인수는 종료 코드로 환경으로 반환됩니다.
스크립트가 종료 메서드를 호출하지 않을 가능성이 높으며 기본 종료 코드는 0입니다.
의 매뉴얼:
옵션 인수 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 시스템에서) 근데 이게 옳은 일인지 모르겠어요.
기록에 대해서는 여기서 정의한 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
표준 종료 코드를 정의하는 모듈이 있습니다.
예를 들어 Permission denied는 오류 코드 13입니다.
import errno, sys
if can_access_resource():
do_something()
else:
sys.exit(errno.EACCES)
종료 코드0 은, 통상은 「여기에서는 문제가 없습니다」를 의미합니다.그러나 스크립트의 프로그래머가 규약을 따르지 않은 경우 소스에게 문의하여 그 의미를 확인해야 할 수도 있습니다.보통 0이 아닌 값은 오류 코드로 반환됩니다.
정답은 "출구 코드 0의 의미에 따라 다릅니다."입니다.
그러나 대부분의 경우 이는 "모든 것이 정상"을 의미합니다.
POSIX가 좋아요.
셸에 다음과 같이 입력합니다.
python script.py && echo 'OK' || echo 'Not OK'
내 Python 스크립트가 호출하는 경우sys.exit(0)
셸이 'OK'를 반환합니다.
내 Python 스크립트가 호출하는 경우sys.exit(1)
(또는 0이 아닌 정수) 셸은 'Not OK'를 반환합니다.
셸을 능숙하게 다루어 스크립트용 문서(또는 소스)를 읽고 종료 코드가 무엇을 의미하는지 확인하는 것이 당신의 일입니다.
UNIX 종료 코드 0 - 성공/확인, 1 - 성공/오류 없음간단하게 사용할 수 있습니다.exit(0)
또는exit(1)
Import하지 않고 콜하다sys
모듈.
표준 POSIX 종료 코드를 휴대용으로 사용하고 싶은 경우는, PyPI 의 패키지를 참조해 주세요.
패키지를 인스톨 합니다.
$ pip install exitstatus
코드로 사용:
import sys
from exitstatus import ExitStatus
sys.exit(ExitStatus.success)
종료 코드는 스크립트 작성자가 할당한 의미만 가집니다.Unix의 전통은 종료 코드0은 '성공'을 의미하며, 그 이외의 것은 실패입니다.특정 스크립트의 종료 코드가 무엇을 의미하는지 확인하는 유일한 방법은 스크립트 자체를 조사하는 것입니다.
sys.exit()를 사용하는 것보다 exit(0)을 삽입한 상태로 완전히 셧다운할 것을 권장합니다.
이게 좋은 조언인지 모르겠네요.
기재되어 있는 메뉴얼에는, 다음과 같은 내용이 기재되어 있습니다.
사이트 모듈(-S 명령줄 옵션이 제공되는 경우를 제외하고 시작 시 자동으로 가져오기됨)은 기본 제공 네임스페이스에 몇 가지 상수를 추가합니다.인터랙티브인터프리터 셸에 도움이 되므로 프로그램에서 사용하지 마십시오.
그 후, 다음과 같이 입력합니다.
exit(코드=없음)
인쇄 시 "Use quit() 또는 Ctrl+D(즉 EOF)를 사용하여 종료"와 같은 메시지를 인쇄하고 호출 시 지정된 종료 코드를 사용하여 SystemExit을 올리는 개체입니다.
이것을 sys.exit() 문서와 비교해보면, 이 문서는 같은 메커니즘을 사용하고 있습니다.SystemExit
예외.
OS 명령어에는 종료 코드가 있습니다.Linux 의 종료 코드를 참조해 주세요.셸은 종료 코드를 사용하여 프로그램이 동작했는지, 문제가 있었는지, 실패했는지 여부를 판단합니다.표준(또는 적어도 일반적으로 사용되는) 종료 코드를 작성하기 위한 노력이 있습니다.이 상세 셸 스크립트의 투고를 참조해 주세요.
많은 프로그래밍 언어의 종료 코드는 프로그래머에게 달려 있습니다.따라서 프로그램 소스 코드(또는 매뉴얼)를 확인해야 합니다.0은 보통 "모든 것이 잘 되었다"는 뜻이다.
예외 핸들러 및 기타 작업을 실행하려면 를 사용하는 것보다 빌트인을 사용하여 완전히 셧다운할 것을 권장합니다.sys.exit()
프로세스가 갑자기 종료됩니다.
언급URL : https://stackoverflow.com/questions/285289/exit-codes-in-python
'programing' 카테고리의 다른 글
MySQL에 삽입할 때 PHP에서 단일 따옴표 이스케이프 (0) | 2022.09.11 |
---|---|
Mariadb 업데이트 문을 실행하는 동안 오류가 발생했습니다. (0) | 2022.09.11 |
PHP에서 JavaScript 함수를 호출하려면 어떻게 해야 합니까? (0) | 2022.09.11 |
chars [ ]와 char *의 차이점은 무엇입니까? (0) | 2022.09.11 |
Laravel의 웅변적인 "IN" 쿼리를 만드는 방법 (0) | 2022.09.11 |