class PauseData: #мой класс для хранения данных в файле
attempt=0
timeout=0
gusr=''
gpwd=''
gusrs=[]
gpwds=[]
def pause():
f =open(pausefile,'wb')
out=PauseData
out.attempt=attempt
out.timeout=timeout
out.gusr=gusr
out.gpwd=gpwd
out.gusrs=gusrs
out.gpwds=gpwds
pickle.dump(out,f)
f.close()
def resume():
f=open(pausefile,'rb')
res=pickle.load(f)
attempt=res.attempt
timeout=res.timeout
gusr=res.gusr
gpwd=res.gpwd
gusrs=list(res.gusrs)
gpwds=list(res.gpwds)
f.close()
[python 3] Сохранение состояния программы в файл
Код:
pause и resume вызываются при выключении и включении программы. Почему этот код не работает(данные даже не записываются в файл)? Заранее спасибо.
Действием out=PauseData Вы ссылаетесь на класс, а не создаёте объект класса, поэтому pickle не будет сохранять значения переменных, а только их названия. Надо out = PauseData().
В функции resume() переменные attempt, timeout и т.д. являются локальными и никак не влияют на состояние одноименных глобальных. Лучше не использовать глобальные переменные вообще. Если приведёте весь код, то можно будет посоветовать, как от них избавиться.
Спасибо за ответ. К сожалению, весь скрипт держится на этих переменных, передавать их из одной ф-ции в другую в параметрах неохото)
Цитата: an1s1
К сожалению, весь скрипт держится на этих переменных, передавать их из одной ф-ции в другую в параметрах неохото)
В таких случаях применяют ООП. Пытаетесь применять классы, так разберитесь что такое объекты класса и как их использовать.