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ってそんなに使う機会無さそうだから使ってみたかっただけだったり