command line 형태로 프로그램을 개발하다보면 사용자가 입력을 하여야 다음으로 넘어가게 됩니다. 대부분의 경우에는 이렇게 개발하면 됩니다. 그런데 경우에 따라 일정기간 사용자 입력이 없으면 다음으로 넘어가야하는 경우도 있습니다. 예를들어 자동으로 trading하는 프로그램의 경우에 사용자 입력이 없으면 trading할 대상이 있는지 확인하는 부분으로 넘어가는 기능이 필요합니다.

파이썬에서 제공하는 기본 입력함수는 input() 입니다. 아래와 같이 사용하는데, 사용자가 입력하고 enter를 칠때 까지 멈춰있습니다.

 

사용자가 입력할 때 까지 계속 기다리는 input()

 

제가 필요한 것은 일정 시간동안 입력이 없으면 자동으로 default 입력 값으로 이 줄을 실행하는 것입니다. 열심히 구굴링을 해보니, 역시나 좋은 예제 코드가 있더군요.

 

방법은 msvcrt.kbhit() 라고 하는 keyboard 입력 여부를 확인할 수 있는 함수를 이용하는 것입니다. 동작방식은 간단합니다. 무한정 loop를 돌면서 keyboard 입력이 있었다면 한 글자 읽어옵니다. 이걸 반복하다가 enter키가 들어오면 모아서 돌려줍니다. 만약 keyboard 입력이 없었다면 기다리는 시간이 지났는지 확인하여 만약 대기 시간이 지났으면 default 값을 돌려줍니다.

이러한 일을 수행하는 코드를 만들기 위해서는 아래 함수를 사용하여야 합니다.

 

msvcrt.kbhit() : 키보드가 눌리어졌는지 확인

msvcrt.getche() : 눌리어진 한 문자 받아오기

 

일정 시간 동안 입력이 없으면 자동으로 default 값을 돌려주는 input 함수는 아래 github에 있습니다.

 

https://github.com/multizone-quant/system-trading/blob/master/get_default_input_after_limited_waiting_time

반응형

설정

트랙백

댓글