Файлы, использующие управляющие коды вместо чисел

#python #unicode

#питон #юникод

Вопрос:

 level = 6

try:
    with open('highscore.txt', 'r ') as frplus:
        highscore = int(frplus.read())
        if level > highscore:
            frplus.truncate(0)
            frplus.write(str(level))
except FileNotFoundError:
    with open('highscore.txt', 'w') as fw:
        fw.write(str(0))
 

Я тестирую систему записи рекордов для игры, которую я создаю.

Когда я запускаю это, я получаю код ошибки: ValueError: недопустимый литерал для int() с основанием 10: ‘ x005’

Я провел некоторое исследование, и я думаю, что по какой-то причине файл печатает управляющие коды Unicode для чтения файла вместо цифровых кодов.

Как я могу это исправить?

Ответ №1:

Ваша проблема на самом деле заключается в том, что вы усекаете файл, но не записываете его в начале файла. Это означает, что первым байтом файла является 0x00 нулевой байт. Просто добавьте frplus.seek(0) after frplus.truncate(0) , и это должно сработать. Возможно, вам потребуется удалить существующий файл, прежде чем он заработает.