У меня есть сценарий, который я написал, который хранит экземпляры классов расходов и доходов в списках.
При первом запуске модуля я использую блок try / Кроме того, чтобы проверить наличие маринованного файла:
try:
#list definitions
expenselist = pickle.load(open(filename,'rb'))
incomelist = pickle.load(open(filename,'rb'))
except:
print ("Generating new lists.")
#list definitions
expenselist = []
incomelist = []
Работает так, как задумано, при запуске в режиме IDLE: test-slide-1
Программа печатает отладочное сообщение о создании новых списков и печатает пустые списки.Затем он предлагает пользователю ввести данные для создания экземпляра класса, который добавляется в пустые списки.
enterValue = str(input("Hi, press 1 to enter income and 2 to expense"))
try:
if enterValue == '1':
addIncome ()
#printRev()#debug to print class
elif enterValue == '2':
addExpense ()
#printExp() #debug to print class
else:
raise ValueError
except ValueError:
print ("Incorrect Value.")
Этот результат приводит к IDLE: test-slide-2
Затем он маринован с использованием:
#pickle expenselist
pickle.dump(expenselist,open(filename,'wb'))
#pickle incomelist
pickle.dump(incomelist,open(filename,'wb'))
Маринованныйданные хранятся здесь: file_structure
Когда я открываю этот файл с помощью Notepad ++, я получаю это:
€] q.
Итак, я знаю эточто-то сохранил.
Все до сих пор шло в соответствии с дизайном, но когда я снова запускаю скрипт, я получаю: test-slide-3
Мое отладочное сообщение о создании новых списковне печатал, поэтому я знаю, что он обнаружил и попытался загрузить файл, но он печатал пустые списки вместо данных, которые я сохранял в списке во время предыдущего сеанса.
Я уже несколько недель пытаюсь понять, что происходит.Первоначально я думал, что это сохранение местоположения экземпляра класса, а не самого экземпляра, но он должен напечатать адрес экземпляра, если это так.Вместо этого я получаю пустые списки.
Мои вопросы: 1, генерирует ли он новые списки независимо от загрузки рассола и как мне его остановить?и 2, если это не проблема, то что?
Я на 50% самоучка, и я исчерпал ресурсы, о которых знаю.У меня было два программиста взглянуть на код, но ни один из них не является экспертом Python.Так что это единственное, что я не пробовал.