데이터 분석가

파이썬 가장 위험한 글쓰기 (udemy project 8) 본문

유데미 부트캠프 프로젝트(Final)

파이썬 가장 위험한 글쓰기 (udemy project 8)

PlintAn 2023. 6. 28. 14:00

안녕하세요 !

 

이번 시간에는 5초 이상 글쓰기를 멈추면 써왔던 글들이 모두 초기화되는 

 

파이썬 코드를 구축해보겠습니다

 

import time
import msvcrt
import threading

class TextInput:
    def __init__(self):
        # 텍스트 초기화
        self.text = ""
        # 스레드 간 동기화를 위한 락 초기화
        self._lock = threading.Lock()

    def update_text(self):
        while True:
            # 키보드 입력이 있는지 확인
            if msvcrt.kbhit():
                # 키보드에서 문자 가져오기
                ch = msvcrt.getche().decode("utf-8")
                with self._lock:
                    # 입력된 텍스트 추가
                    self.text += ch

    def start_listening(self):
        # update_text 함수를 별도 스레드에서 실행시킴
        threading.Thread(target=self.update_text, daemon=True).start()

if __name__ == "__main__":
    text_input = TextInput()
    # 키보드 입력 수신 시작
    text_input.start_listening()

    print("Start typing... (5 seconds to reset)")

    last_text = ""
    start_time = time.time()

    while True:
        with text_input._lock:
            current_text = text_input.text

        # 새로운 텍스트가 있을 경우
        if current_text != last_text:
            print("Your input: " + current_text, end="\r")
            last_text = current_text
            start_time = time.time()
        
        # 5초 동안 입력이 없을 경우
        if time.time() - start_time > 5:
            with text_input._lock:
                # 텍스트 초기화
                text_input.text = ""
            print("5 seconds passed. Your input was reset.", end="\r")
            last_text = ""
            start_time = time.time()

        time.sleep(0.1)  # 무한 루프가 너무 빠르게 돌아가지 않게 하는 대기 시간

사실 파이썬은 터미널 기반 프로그램으로 실시간으로 신호를 주고 받는 형태의 동적인 작업은 어렵습니다..

 

그래서 웹 기반 동적 언어인 자바 스크립트를 이용해야 하는데.., 제가 자바 스크립트를 잘 쓰지 못하는 관계로..

 

부득이하게 파이썬 언어를 이용해서 간단히 구축해 보았습니다 !

터미널에서 실행

 

Comments