ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 개발일지 (1. 마우스 좌표 값 csv로 저장하기)
    Python/Python 2020. 4. 9. 11:21
    반응형

    요즘 마우스 좌표를 받아서 분석해볼려는 시도를 해보고 있는데

     그러기 위해서 마우스 좌표 값들을 시간대별로 출력하는 프로그램을 작성하고 있다.

     

    먼저 첫번째로 마우스 pynput.mouse 에 리스너들을 임폴트해서 마우스 좌표를 반환하는 프로그램을 작성하였다

    from pynput.mouse import Listener
    
    
    def on_move(x, y):
        print('마우스 좌우측 좌표 {0} , 마우스 상하 좌표 {1} '.format(x, y))
    
    
    def on_click(x, y, button, pressed):
        print('마우스 클릭 좌표 {0} , {1} 클릭 값 {2}'.format(x, y, pressed))
    
    
    def on_scroll(x, y, dx, dy):
        print('스크롤 이벤트  (좌표 , 스크롤 값 ):({0},{1}) ({2},{3})'.format(x, y, dx, dy))
    
    
    with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
        listener.join()
    

     

     

    그 다음일은 print 된  좌표값들을  csv 로 저장해준다. 

     

    from pynput.mouse import Listener
    import csv
    
    # csv 로 저장하기 위해 호출
    f = open('mouse_logs.csv', 'w', newline='')
    wr = csv.writer(f)
    
    
    def on_move(x, y):
        # 마우스 이동시 좌표값 저장
        wr.writerow([x, y])
    
    
    def on_click(x, y, button, pressed):
        # 클릭시 좌표값 및 버튼 정의
        wr.writerow([x, y, button])
    
    
    def on_scroll(x, y, dx, dy):
        # 마우스 스크롤시 좌표 값 및 스크롤 값
        wr.writerow([x, y, dx, dy])
    
    
    with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
        listener.join()
        f.close()
    

     

     

    그 다음 마우스 들 이동 사이에 얼마만큼이 시간이 지낫는지 확인하기 위해서 시간을 모듈화해서 호출해준다 

     

    from pynput.mouse import Listener
    from datetime import datetime, timezone, timedelta
    import csv
    import time
    
    
    f = open('mouse_logs2.csv', 'w', newline='')
    
    wr = csv.writer(f)
    # 한국 시간으로 저장하기 위해 포멧을 맞춰준다
    KST = timezone(timedelta(hours=9))
    
    now = datetime.now(KST)
    
    
    class update():
        def year(self):
            return datetime.now(KST).strftime("%Y%m%d")
    
        def hour(self):
            return datetime.now(KST).strftime("%H")
    
        def mit(self):
            return datetime.now(KST).strftime("%M")
    
        def sec(self):
            return datetime.now(KST).strftime("%S")
    
        def mil(self):
            return datetime.now(KST).strftime("%f")
    
    
    def on_move(x, y):
        print(x, y)
    
        wr.writerow([time.time(), update().year(), update().hour(),
                     update().mit(), update().sec(), update().mil(),  x, y])
        print(datetime.now(KST).strftime('%Y-%m-%d %H:%M:%S.%f'))
    
    
    def on_click(x, y, button, pressed):
    
        wr.writerow([time.time(), update().year(), update().hour(),
                     update().mit(), update().sec(), update().mil(),  x, y, button])
    
        # logging.info('Mouse clicked at ({0} , {1}) with{2}'.format(x, y, button))
    
    
    def on_scroll(x, y, dx, dy):
        # logging.info('Mouse scrolled at ({0},{1}) ({2},{3})'.format(x, y, dx, dy))
    
        wr.writerow([time.time(), update().year(), update().hour(),
                     update().mit(), update().sec(), update().mil(),  x, y, dx, dy])
    
    
    with Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
        listener.join()
    
        f.close()
    

     해당 시간을 모듈화해서 움직일 때마다 실행해주게  작성하였다

    본인은 좀더 시간에 대해서 미세한 변화를  보기위해서 time을 사용하였다 

     

    반응형

    댓글

Designed by Tistory.