Как использовать pickle для извлечения файла для моего словаря?

#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. обычно вам нужно прочитать только один раз при запуске приложения и написать один раз перед выходом. в других меню вы просто взаимодействуете с данными в памяти.