LoginSignup
3
4

More than 5 years have passed since last update.

pythonでクリップボードの監視をしてチェックをする

Posted at

windowsである一覧の一部の項目が指定のリストに一致するか確認する作業があり作りました。
そもそも全て自動化すれば良いとは思いますが、微妙な作業量だったのでクリップボードの確認を行い指定の項目をコピーした時にチェックするスクリプトで済ませました。

下記のような指定のリストを作ります。

memo
aaa
bbb
ccc
...

メインスクリプトです。実行中は上記の「memo」にない項目が「memo2」というファイルにに追加されます。
スクリプトではwinsoundで音も鳴るようにしています。

clip.py
#! /usr/bin/env python
# coding=utf-8

import time
import pyperclip
import winsound

# 登録済みワードの一覧ファイル
list_file = 'memo'
# 未登録ワードの登録用ファイル
output_file = 'memo2'

def check_text(tmp_string,text_list):
    check_flg = False
    for i in text_list:
        if tmp_string == i:
            check_flg = True
    if check_flg:
        print(u"登録済み")
    else:
        print(u'未登録')
        winsound.PlaySound("SystemAsterisk", winsound.SND_ALIAS)
        f = open(output_file,'a')
        f.write(tmp_string.encode('utf-8'))
        f.write('\n')
        f.close()

if __name__ == '__main__':
    clip_tmp = pyperclip.paste()
    f = open(list_file,'r')
    text_list = []
    for i in f:
        text_list.append(i.strip())
    f.close()
    print(u'準備完了')
    while True:
        if clip_tmp == pyperclip.paste():
            pass
        else:
            clip_tmp = pyperclip.paste()
            check_text(clip_tmp, text_list)
        time.sleep(0.3)

上記のスクリプトでは重複チェックをしてなかったので「memo2」が出来たら
下記のチェックスクリプトで重複を削除したmemo3というリストを作ります。

unique.py
#! /usr/bin/env python
# coding=utf-8

input_file = "memo2"
output_file = "memo3"

if __name__ == '__main__':
    input_f = open(input_file,"r")
    tmp_list = []
    for  i in input_f:
        flg = False
        for j in tmp_list:
            if j ==  i:
                flg = True
        if flg:
            pass
        else:
            tmp_list.append(i)
            out_f = open(output_file, 'a')
            out_f.write(i)
            out_f.close()

    input_f.close()

他に良い方法があった気がしてあとになって調べたのですがsorted(set(list), key=list.index)を採用した方が良かったですね、、、

unique.py
#! /usr/bin/env python
# coding=utf-8

input_file = "memo2"
output_file = "memo3"

if __name__ == '__main__':
    input_f = open(input_file,"r")
    input_list = []

    for i in input_f:
        input_list.append(i)

    unique_list = sorted(set(input_list), key=input_list.index)
    out_f = open(output_file, 'a')

    for i in unique_list:
        out_f.write(i)

    out_f.close()

ホントはpyperclipとかwinsoundってそんなに使う機会無さそうだから使ってみたかっただけだったり

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4