Добавление в словарь Python, очистка словаря, затем добавление - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь создать менеджер паролей ... и он очищает словарь, а затем добавляет ключ каждый раз, когда вы пытаетесь добавить новый пароль

q1 = input("yes/no: ")                                                                                                                                                                            
    if q1 == "yes":                                                                                                                                                                                   
        print("please make vault password?")                                                                                                                                                          
        pass = getpass.getpass(prompt='Password:', stream=None)                                                                                                                                      
        with open("src/o", "wb") as op:                                                                                                                                                               
            q2 = input("website used on: ")                                                                                                                                                           
            o[q2] = p                                                                                                                                                                                 
            print(o)                                                                                                                                                                                  
            o = pickle.dump(o,op,protocol=2)                                                                                                                                                          
        with open("src/o", "br") as opp:                                                                                                                                                              
            print(pickle.load(opp))

1 Ответ

0 голосов
/ 19 сентября 2019

Вы перезаписываете свой маринованный объект каждый раз.Также логика вашего кода немного испорчена.Попробуйте следующее:

q1 = input("yes/no: ")
if q1 == "yes":

  # get user info
  print("please make vault password?")
  given_website = input("website used on: ")   
  given_pass = getpass.getpass(prompt='Password:', stream=None) 

  # open the vault
  with open("src/o", "br") as vault:
    o = pickle.load(vault) 
    # store the new data in the vault
    o[given_website] = given_pass

  # close the vault
  with open("src/o", "wb") as vault:
    pickle.dump(o, vault, protocol=2)
...