Как мне сохранить счет, который остается на правильном числе, даже после закрытия программы python

Я придумал решение, что я мог бы просто иметь текстовый файл с 0 в нем изначально, и каждый раз, когда я использую программу, я беру число в текстовом файле и увеличиваю его на 1, а затем читаю текстовый файл, чтобы получить число в ротации, но кажется, есть ошибка. Код работает впервые, он добавляет 1 к 0 и делает его 1, но добавляет перед ним несколько пробелов, для которых я использовал команду замены, но все же я сталкиваюсь с ошибкой.

Мой код выглядит следующим образом:

защита count_incr():

f=open("entry count.txt","r+")
v=f.readlines()
for i in v:
    count=int(i)
    count+=1
    count=str(count)
    count.replace(" ","")
    f.truncate(0)
f.write(count)
f.close()

count_incr()

Ошибка заключается в следующем:

Трассировка (последний последний вызов): Файл C:\Users\Technical Gossip\Desktop\Project\Input and insertion.py, строка 27, в count_incr() Файл C:\Users\Technical Gossip\Desktop\Project\Input and insertion .py, строка 19, в count_incr count=int(i) ValueError: неверный литерал для int() с основанием 10: '\x001'


person Nitish Choudhary    schedule 07.04.2021    source источник
comment
Можете ли вы показать код, где вы записываете количество в файл? Кроме того, если это не работает по какой-то странной причине, и хотя это излишне, однострочная база данных с одной строкой с одним столбцом будет работать.   -  person BuddyBob    schedule 07.04.2021
comment
@BuddyBobIII Я не заинтересован в использовании только этого конкретного метода, поэтому, если у вас есть лучший, сообщите мне, и я пишу count в файл в самой предпоследней строке.   -  person Nitish Choudhary    schedule 07.04.2021


Ответы (1)


truncate изменяет длину файла, но не перематывает его. Когда вы записываете новый счетчик, вы все еще находитесь в конце старого файла. Операционная система услужливо дополняет это значение нулевыми байтами.

Вместо truncate используйте f.seek(0). Вы можете подумать о добавлении новой строки, но это на ваше усмотрение.

person Tim Roberts    schedule 07.04.2021