Python/Python

Python 개발일지 (1. 마우스 좌표 값 csv로 저장하기)

개발자리 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을 사용하였다 

 

반응형