не стирает данные из файла после записи
Ребята помогите, пожалуйста! Этот код берёт число из файла прибавляет 1 и записывает обратно в файл, но он не стирает полностью файл
Вот код
with open("save.txt", "r+") as _read:
#while True:
file_read = _read.read()
click = input("click")
hah = int(file_read) + int(1)
_read.write("")
_read.write(str(hah))
Ответы (3 шт):
Попробуй считать файл, потом его закрыть, потом снова открыть в режиме записи и вывести туда число
with open("file.txt", "r+") as _read:
file_read = _read.read()
# click = input("click")
hah = int(file_read) + int(1)
with open("file.txt","w") as _writefile:
_writefile.write("")
_writefile.write(str(hah))
with open("save.txt") as inf:
lst = [int(line) + 1 for line in inf]
with open("save.txt", "w") as outf:
outf.writelines([str(i) + "\n" for i in lst])
Этот код работает и для файла с многими строками, по одному целому числу в каждой строке.
В первой части он читает строки файла и создает список из чисел в них, увеличивая каждое число на 1.
В другой части записывает числа из этого списка обратно в файл, конвертируя их на строки и добавляя к каждому из них знак перехода на новую строку (\n).
Можно и в режиме r+ эту задачу решить, просто надо "перемотать" позицию на начало файла перед записью:
with open("tempFile.txt", "r+") as _read:
file_read = _read.read()
click = input("click")
hah = int(file_read) + 1
_read.seek(0) # "перемотка" в начало файла
_read.write(str(hah))
Немного лишних конструкций я удалил из кода.
Довольно странно, что никто из отвечавших не помнит про метод seek.