Python使用pynput統計鍵盤使用情況

2021-09-01 12:43:42 字數 2655 閱讀 6035

今天天氣突然變冷,下午快上課的時候下起了雨,所以果斷逃了課,哈哈哈

在宿舍看完部電影後,覺得有點無聊

突發奇想想用python寫個統計鍵盤使用情況的小指令碼

好了,廢話不多說,上**

import pynput

import pymysql

from copy import deepcopy

"""create database db_key_master;

create table `tb_key_day` (

`key_name` varchar(30) default null,

`count` int(11) default null,

`record_date` date default null

) engine=innodb default charset=utf8;

使用方法:

先在mysql中建立資料庫和表

確保電腦上安裝了pymysql和pynput庫

沒裝的話,pip install下

然後執行此檔案,按pause退出

可以自己寫個程式分析每天的鍵盤使用情況

"""address = 'localhost'

user = 'root'

password = 'root'

database = 'db_key_master'

conn = pymysql.connect(address, user, password, database)

cursor = conn.cursor()

init_dictionary = {}

key_dictionary = {}

# 從資料庫中查詢資料

def get_key_data():

dictionary = {}

sql = 'select key_name, count from tb_key_day where record_date =curdate()'

cursor.execute(sql)

result_set = cursor.fetchall()

if len(result_set) > 0:

for row in result_set:

dictionary[row[0]] = row[1]

return dictionary

# 寫入資料到資料庫

def write_key_data(init_dict, final_dict):

update_sql = "update tb_key_day set count= where key_name='' and record_date=curdate()"

insert_sql = "insert into tb_key_day(key_name, count, record_date) values ('', , curdate())"

for key in final_dict:

if key in init_dict:

try:

cursor.execute(update_sql.format(final_dict[key], key))

except:

print('寫入資料出錯')

else:

try:

cursor.execute(insert_sql.format(key, final_dict[key]))

except:

print('寫入資料出錯')

conn.commit()

def on_key_release(key):

key_string = str(key).replace('\'', '')

if key_string == '\\\\':

key_string = '反斜槓'

if key_string in key_dictionary:

key_dictionary[key_string] += 1

print('{},{}'.format(key_string, key_dictionary[key_string]))

else:

key_dictionary[key_string] = 1

print('{},{}'.format(key_string, key_dictionary[key_string]))

if key_string == 'key.pause':

write_key_data(init_dictionary, key_dictionary)

conn.close()

return false

# sys.exit(0)

if __name__ == "__main__":

key_dictionary = get_key_data()

init_dictionary = deepcopy(key_dictionary)

with pynput.keyboard.listener(on_release=on_key_release) as listener:

listener.join()

就這樣了,**比較簡單

沒有mysql資料庫的可以改一下,寫log檔案到本地

有了資料可以分析下每天敲的最多的鍵是哪個,我的是backspace,哈哈哈哈

使用pyhook3 pynput實現鍵盤連發

pyhook在視窗標題為中文時會報錯,必須安裝pyhook3。pip install pyhook3 可能存在以下問題 swig.exe不存在 提示缺少vc 14.0 visual c build tools 2015 cl.exe不存在 開啟 c program files x86 microso...

Pynput使用組合鍵,以及同時監控鍵盤和控制鍵盤

我想寫乙個使用快捷鍵來執行網頁搜尋的小軟體,但發現網上還沒有很多關於pynput使用組合鍵的帖子,只好自己寫乙個了.我剛開始的時候找了半天,發現了乙個人使用多執行緒的方式來實現這個功能,但我覺得這個東西還是越簡單越好 from pynput import keyboard from pynput.k...

在Oracle中使用to char按時間統計

如果oracle資料庫的user access表裡有user name,login time欄位儲存使用者的登陸時間,可以使用to char函式就行分時段統計 1.按小時統計訪問人數,並且按訪問次數降序顯示 select to char login time,hh24 count from user...