Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[python 3] Сохранение состояния программы в файл

56K
06 января 2012 года
an1s1
47 / / 03.01.2012
Код:
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()

pause и resume вызываются при выключении и включении программы. Почему этот код не работает(данные даже не записываются в файл)? Заранее спасибо.
87
06 января 2012 года
Kogrom
2.7K / / 02.02.2008
an1s1, во первых, приведён не весь код, потому можно только догадываться в чём ошибка. Например, неизвестно как Вы работаете с глобальными переменными, которые пытаетесь использовать в приведённых функциях, неизвестно как производится вывод данных и т.д.

Действием out=PauseData Вы ссылаетесь на класс, а не создаёте объект класса, поэтому pickle не будет сохранять значения переменных, а только их названия. Надо out = PauseData().

В функции resume() переменные attempt, timeout и т.д. являются локальными и никак не влияют на состояние одноименных глобальных. Лучше не использовать глобальные переменные вообще. Если приведёте весь код, то можно будет посоветовать, как от них избавиться.
56K
08 января 2012 года
an1s1
47 / / 03.01.2012
Спасибо за ответ. К сожалению, весь скрипт держится на этих переменных, передавать их из одной ф-ции в другую в параметрах неохото)
87
08 января 2012 года
Kogrom
2.7K / / 02.02.2008
Цитата: an1s1
К сожалению, весь скрипт держится на этих переменных, передавать их из одной ф-ции в другую в параметрах неохото)



В таких случаях применяют ООП. Пытаетесь применять классы, так разберитесь что такое объекты класса и как их использовать.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог