Python에서 KeyboardInterrupt 오류를 잡아라
키보드인터럽트 오류는 사용자가 수동으로 Ctrl + Ctrl 또는 Ctrl + Z 명령을 사용하거나 주피터 노트북의 경우 커널을 중단하여 실행 중인 프로그램을 중지하려고 할 때 발생합니다. 의도하지 않은 키보드
사용을 방지하기 위해인터럽트 자주 발생하는 파이썬에서는 예외 처리를 사용할 수 있다.
이 가이드에서는 Python에서 KeyboardInterrupt
오류를 잡는 방법을 배웁니다.
try...except
문을 사용하여 Python에서 KeyboardInterrupt
오류 잡기
try...except
문은 Python에서 예외 처리 목적으로 사용됩니다. try...except
문에는 고유한 구문이 있습니다. 그것은 세 개의 블록으로 나뉘며, 모두 파이썬 코드에서 다른 목적과 기능을 가지고 있습니다.
try
블록에는 인터프리터가 오류를 검사해야 하는 코드 클러스터가 포함되어 있습니다.except
블록은 필요한 예외를 추가하고 코드 오류를 우회하는 데 사용됩니다.finally
블록에는try
및except
블록에 의해 무시되고 확인 없이 실행되어야 하는 명령문이 포함됩니다.
Python에서 KeyboardInterrupt
에 대한 코드를 설명하기 위해 KeyboardInterrupt
예외를 수동으로 처리하면서 사용자에게 입력을 요청하는 간단한 프로그램을 사용합니다.
다음 코드는 try...except
문을 사용하여 Python에서 KeyboardInterrupt
오류를 포착합니다.
try:
x = input()
print("Try using KeyboardInterrupt")
except KeyboardInterrupt:
print("KeyboardInterrupt exception is caught")
else:
print("No exceptions are caught")
위의 프로그램은 다음 출력을 제공합니다.
KeyboardInterrupt exception is caught
위의 코드에서 입력 함수는 try
블록 사이에 있으며 이 경우 더 자세한 내용이 필요하지 않으므로 비어 있습니다. 그런 다음 except
블록은 KeyboardInterrupt
오류를 처리합니다. KeyboardInterrupt
오류는 KeyboardInterrupt
프로세스가 발생할 때 식별할 수 있도록 수동으로 발생합니다.
Python은 사용자가 코드 덩어리에서 원하는 만큼 except
블록을 정의할 수 있습니다.
신호 처리기를 사용하여 Python에서 KeyboardInterrupt
오류 잡기
signal
모듈은 Python에서 신호 처리기를 사용하는 기능 및 메커니즘을 제공하는 데 사용됩니다. 기본적으로 키보드 Ctrl+C의 인터럽트인 SIGINT
신호를 잡을 수 있습니다. 이 경우 KeyboardInterrupt
를 높이는 것이 기본 작업입니다.
Python의 sys
모듈은 Python 런타임 환경의 고유한 부분을 조작하는 데 사용되는 몇 가지 필수 변수 및 기능을 제공하는 데 사용됩니다.
이 방법을 오류 없이 성공적으로 사용하려면 signal
및 sys
모듈을 Python 코드로 가져와야 합니다.
다음 코드는 신호 처리기를 사용하여 Python에서 KeyboardInterrupt
오류를 포착합니다.
import signal
import sys
def sigint_handler(signal, frame):
print("KeyboardInterrupt is caught")
sys.exit(0)
signal.signal(signal.SIGINT, sigint_handler)
위의 코드는 다음 출력을 제공합니다.
KeyboardInterrupt is caught
위의 코드에서 signal.signal()
함수는 특정 유형의 신호가 수신될 때 실행할 사용자 정의 핸들러를 정의하는 데 사용됩니다.
특정 신호에 대해 설정된 핸들러는 사용자가 수동으로 재설정할 때까지 설치된 상태로 유지됩니다. 이 경우 유일한 예외는 SIGCHLD
에 대한 핸들러입니다.
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn