毎回テキストを線型探索するのは避けたいところですね。
起動時に読み取ったテキストをsetに放り込んで使うのが簡単ではないでしょうか。
そして終了時にファイルを上書きしてやれば良いです。
テキスト形式に拘らなければ、バイナリで出力するのが効率的でしょう。
書いてみた
Python
1from pathlib import Path
2import pickle
3
4
5FILE_PATH = Path(__file__).parent / 'words.pkl'
6
7def main():
8 #
9 if FILE_PATH.exists():
10 with FILE_PATH.open(mode='rb') as f:
11 words = pickle.load(f)
12 else:
13 words = set()
14
15 #
16 while True:
17 try:
18 word = input('>>> ')
19 except EOFError:
20 break
21
22 if word in words:
23 print('already exists.')
24 else:
25 words.add(word)
26
27 #
28 with FILE_PATH.open(mode='wb') as f:
29 pickle.dump(words, f)
30
31
32if __name__ == '__main__':
33 main()
なお、pklファイルの中身はpickleモジュールを直接叩けば覗けます。
cmd
1>python -m pickle words.pkl
2{'', 'hoge', 'aweff', 'fuu', 'foo', 'fuga', 'hgoe'}