#python #dictionary #pickle
Вопрос:
В настоящее время я пытаюсь выполнить задание, в котором я создаю словарь с адресами электронной почты, где я могу редактировать словарь. Если бы я вышел и снова открыл словарь, предыдущие данные должны были быть извлечены. Насколько я понимаю, я должен использовать pickle для извлечения данных. Я просто хочу сделать так, чтобы сначала я мог создать словарь, а затем, если бы я снова открыл словарь, он извлек бы предыдущие данные.
import pickle
def print_menu():
print('1. Add an Email Address')
print('2. Remove an Email Address')
print('3. Change an Email Address')
print('4. Lookup an Email Address')
print('5. Quit')
print()
def change(emails):
name = input('Enter a name: ')
if name in emails:
address = input('Enter the new address: ')
emails[name] = address
pickle.dump(emails, open("emails.dat", "wb"))
emails = pickle.load(open('emails.dat', 'rb'))
menu_choice = 0
print_menu()
while menu_choice != 5:
emails = pickle.load(open('emails.dat', 'rb'))
menu_choice = int(input("Type in a menu choice (1-5): "))
if menu_choice == 3:
change(emails)
elif menu_choice == 1:
print("Add Name and Email")
name = input("Name: ")
email_ad = input("Email Address: ")
emails[name] = email_ad
pickle.dump(emails, open("emails.dat", "wb"))
elif menu_choice == 2:
print("Remove Name and Email")
name = input("Name: ")
if name in emails:
del emails[name]
else:
print(name, "was not found")
elif menu_choice == 4:
print("Lookup Email")
name = input("Name: ")
if name in emails:
print("The number is", emails[name])
else:
print(name, "was not found")
else:
print("Goodbye!")
exit
Комментарии:
1. в чем проблема? какая-нибудь ошибка? я думаю, что это плохо-многократно читать и записывать файл dat. обычно вам нужно прочитать только один раз при запуске приложения и написать один раз перед выходом. в других меню вы просто взаимодействуете с данными в памяти.