Я пишу программу списка дел. Он хранит файл с вещью для каждой строки и позволяет пользователю добавлять или удалять элементы. Проблема в том, что по какой-то причине в конце файла я получаю много нулевых байтов, даже если элемент правильно удален. Я покажу вам пару скриншотов, чтобы убедиться, что я проясняю.Запись в файл в Python вставляет нулевые байты
Это файл в Notepad ++ перед запуском программы:
Normal todo list http://img683.imageshack.us/img683/2812/beforew.png
Это файл после удаления элемента 3 (считая с 1):
Item 3 is gone, but there are NUL bytes http://img190.imageshack.us/img190/9387/afterj.png
Это является соответствующий код. Фактическая программа больше, но запуск только этой части вызывает ошибку.
import os
TODO_FILE = r"E:\javi\code\Python\todo-list\src\todo.txt"
def del_elems(f, delete):
"""Takes an open file and either a number or a list of numbers, and deletes the
lines corresponding to those numbers (counting from 1)."""
if isinstance(delete, int):
delete = [delete]
lines = f.readlines()
f.truncate(0)
counter = 1
for line in lines:
if counter not in delete:
f.write(line)
counter += 1
f = open(TODO_FILE, "r+")
del_elems(f, 3)
f.close()
Не могли бы вы указать, где ошибка?
Большое спасибо. Ваш ответ был так же хорош, как и Лес, но я должен был выбрать один, чтобы принять, поэтому я выбрал более ранний. Ничего личного. – Javier