Открепление Python, затем присвоение словарю

Обновление: я попытался сделать две отдельные функции для сохранения и загрузки словаря. Работает красиво. Но все еще есть проблема. Программа не распознает строку emails = updatedEmails

Было бы неплохо распаковать, и этот контент находится в соответствующем словаре, но я не могу заставить его назначить те глобальные "электронные письма", которые изменяют все остальные функции.

================================================== ===

    import pickle     
    dataList = open('data.txt','wb')
    global emails
    emails = {}

    def loading():
        inFile = open('data.txt', 'rb')
        updatedEmails = pickle.load(inFile)
        print (updatedEmails)
        inFile.close()

    def saving(emails):
        dataList = open('data.txt', 'wb')
        pickle.dump(emails, dataList)
        dataList.close()


    def displayMenu():
        print('\t\t\t\tMenu')
        print('\t5)Display the list')
        print('\t6)Quit')

    def main():
        choice = 0
        loading()
        while choice != 6:
            displayMenu()
            choice = int(input('Enter your choice: '))

            if choice == 1:
                add()
            elif choice == 6:
                saving(emails)
            elif choice == 7:
                loading()
                emails = updatedEmails

    main()

1 ответ

Решение

Ваш код открыл файл pickle для первой записи:

dataList = open('data.txt','wb')

Это обрезает файл до 0; к тому времени, когда вы попытаетесь загрузить соленые огурцы из того же файла, он пуст.

Открывайте файл для записи только тогда, когда вы действительно собираетесь записать в него новый маринад, а не раньше.

Другие вопросы по тегам