Открепление 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; к тому времени, когда вы попытаетесь загрузить соленые огурцы из того же файла, он пуст.
Открывайте файл для записи только тогда, когда вы действительно собираетесь записать в него новый маринад, а не раньше.