#python #dictionary #passwords #cloud
Вопрос:
Я пытаюсь сделать сохранитель паролей, где пользователи могут вставить пароль, и он будет сохранен на компьютере. Я начал с
password = str(input("What is your password that you want to save?"))
url = str(input("Which is the site that you want your password to save to?"))
password_saved = {url : password}
with open('password_saved', 'wb') as password_saved_file:
pickle.dump(password_saved, password_saved_file)
print(password_saved)
Однако password_saved = {url:password}
сбрасывает весь словарь на этот, поэтому, если вы запустите его, он просто сбросится только на один, вместо того, чтобы сохранить его весь. Поэтому я попытался заменить его на:
password_saved[url] = password
Но тогда он скажет, что он не определен. Как я могу определить словарь, не внося в него никаких изменений, в том числе без пробелов?
Комментарии:
1. Вам необходимо внести изменения в словарь. Вы на самом деле определяете здесь новый . В этом-то и проблема
2. Спасибо! Не могли бы вы объяснить, как я могу это сделать?
3. @idiotic_nub Вы хотите сохранить пароль для одного веб-сайта? если нет, то, возможно, вам нужно открыть файл в режиме добавления.
4. @Hetal Такер На ваш вопрос, нет, я не храню пароль для одного веб-сайта. Но, если я использую appened, я получу ошибку, потому что я использую словарь, а не список.
Ответ №1:
На самом деле, с вашим кодом все в порядке. Но если вы введете одно и то же значение 2 раза, оно не будет отображаться. Обязательно попробуйте разные URL-адреса для каждого из них, чтобы убедиться, что все работает.
Ответ №2:
Сначала объявите словарь, а затем передайте индекс и значение в словарь.
password_saved = {}
password_saved[url] = password
Комментарии:
1. Да, но если я это сделаю, то password_saved будет сброшен на пустой, потому что я только что объявил его пустым в первой строке. Есть ли способ это исправить?
2. @idiotic_nub вам нужно десериализовать свой маринад , изменить полученный словарь, а затем изучить его .
3. @juanpa.arriviilaga Я действительно не понимаю, что вы подразумеваете под ресериализацией и десериализацией моего маринованного огурца. Не могли бы вы привести мне пример?
Ответ №3:
когда вы говорите, что «это» не определено, вы имеете в виду словарь? Если это так, то это может быть просто проблемой инициализации перед вызовом. Прямо сейчас вы создаете новый словарь с именем «password_saved» только с одной записью. Это должно выглядеть примерно так
password_saved = {}
...
password = str(input("What is your password that you want to save?"))
url = str(input("Which is the site that you want your password to save to?"))
password_saved[url] = password
with open('password_saved', 'wb') as password_saved_file:
pickle.dump(password_saved, password_saved_file)
print(password_saved)
Комментарии:
1. Да, но если я сделаю password_saved = {}, то при запуске он будет возвращен в пустой диктонарий, я хочу только определить словарь, но я не хочу вносить в него изменения.
2. в какой-то момент вам придется создать словарь. Сделайте это при запуске программы. Он не сохранит ваш словарь после завершения программы, если вы об этом думаете.
3. Я имею в виду, что когда я делал password_saved = {} и последний запуск, который я делал, я делал password_saved = {‘ youtube.com ‘ : ‘пароль’}, то вместо этого словарь снова превратит его в пустой.
4. Это также сработало бы для инициализации словаря, у вас не должно возникнуть никаких проблем с использованием password_saved[url] = пароль. попробуйте еще раз вот так и дайте мне знать, что произойдет, потому что с этим утверждением нет никаких проблем.