ソースコード

  1. import shelve,sys,random,re,string
  2. import pyperclip as py
  3. name=sys.argv[1]
  4. pw_shelf=shelve.open('pw')
  5. def strength_test(pw):#pwが強ければTrue,そうでなければFalse
  6.     test_A=re.search(re.compile(r'[A-Z]+'),pw)
  7.     test_a=re.search(re.compile(r'[a-z]+'),pw)
  8.     test_0=re.search(re.compile(r'[0-9]+'),pw)
  9.     if test_A and test_a and test_0 :
  10.         return True
  11.     else:
  12.         return False
  13. def display_list():#登録されているnameを出力
  14.     name_list=list(pw_shelf.keys())
  15.     name_list.sort(key=str.lower)
  16.     print('アルファベット順'.center(10,'-'))
  17.     for k in name_list:
  18.         print(k)
  19.     print('-'*10)
  20. if sys.argv[1]=='list':
  21.     sys.exit()
  22. if name in pw_shelf.keys():
  23.     print(name+'のパスワードを確認しました')
  24.     py.copy(pw_shelf[name])
  25.     print('パスワードをコピーしました')
  26. else:
  27.     print(name+'のパスワードが登録されていません\nパスワードを生成して登録しますか?(y/n)')
  28.     yn=input()
  29.     if yn=='y':
  30.         print('パスワードを生成します\nパスワードの文字数を入力してください')
  31.         character_num=int(input())
  32.         while True:
  33.             str=string.ascii_letters+string.digits+string.punctuation
  34.             pw_lst=random.sample(str,character_num)
  35.             pw=''.join(pw_lst)
  36.             if strength_test(pw):#強いパスワードの場合ループを抜ける
  37.                 py.copy(pw)
  38.                 pw_shelf[name]=pw
  39.                 print('パスワードの登録とコピーが完了しました')
  40.                 break
  41.     else:
  42.         print('exit')

説明

パスワードの作成・管理を行うプログラム
大文字を含めた英数10文字でパスワードを生成し、リストによって管理するというものだ。
リストをワードかエクセルで保存、管理しようとしたが、python-doxcの仕様が理解できなった為、出来なかった。
また、このコードは何故かエラーが出てしまい動かない。
プログラミング難しい........デザイン演習が終わるころには完成させられるようになりたい。

参考文献