Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2016 13:59:14

Stranger
Зарегистрирован: 2016-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ran out of input

def top_scores(score):
    """Forms a top scores list"""
    name = input("Enter your name")
    
    f = open("pickles11.dat", "wb+")
    top_scores = pickle.load(f)
    top_scores[score] = name
    pickle.dump(top_scores, f)
    f.close()
    keys = top_scores.keys()
    keys = list(keys)
    keys.sort(reverse=True)
    print("\nTop scores:")
    
    for i in keys:
        print(top_scores[i], i)

При выполнении возникает ошибка:
top_scores = pickle.load(f)
EOFError: Ran out of input

Подскажите, пожалуйста, где здесь проблема.

Офлайн

#2 Март 30, 2016 14:56:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9796
Репутация: +  849  -
Профиль   Отправить e-mail  

Ran out of input

Stranger
f = open("pickles11.dat", "wb+")
wb+ стирает содержимое файла.



Офлайн

#3 Март 30, 2016 15:02:59

Stranger
Зарегистрирован: 2016-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ran out of input

Сначала получаем значение, потом его изменяем и вновь записываем, wb+ это позволяет. Я не прав?

P.S. Да и в принципе не важно, что оно делает, просто подскажите, как сделать, чтобы всё заработало

Отредактировано Stranger (Март 30, 2016 15:06:38)

Прикреплённый файлы:
attachment Снимок экрана от 2016-03-30 15-00-47.png (212,3 KБ)

Офлайн

#4 Март 30, 2016 15:21:52

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ran out of input



Офлайн

#5 Март 30, 2016 15:25:37

Stranger
Зарегистрирован: 2016-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ran out of input

Ну так в файл перезаписывается уже полученная и измененная ценность, или я сильно ошибаюсь?

Офлайн

#6 Март 30, 2016 15:31:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ran out of input

Stranger
Откройте файл с wb+ и прочтитайте его содержимое.
Согласитесь, проще сделать это, чем гадать?



Офлайн

#7 Март 30, 2016 15:47:54

Stranger
Зарегистрирован: 2016-03-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ran out of input

def top_scores(score):
    """Forms a top scores list"""
    name = input("Enter your name")
    f = open("pickles11.dat", "rb")
    top_scores = pickle.load(f)
    top_scores[score] = name
    f.close()
    f = open("pickles11.dat", "wb")
    pickle.dump(top_scores, f)
    f.close()
    keys = top_scores.keys()
    keys = list(keys)
    keys.sort(reverse=True)
    print("\nTop scores:")
    
    for i in keys:
        print(top_scores[i], i)

Да, вы правы, спасибо за помощь. Переписал, всё работает.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version