Estoy escribiendo un programa de lista de tareas pendientes. Mantiene un archivo con una cosa que hacer por línea y permite al usuario agregar o eliminar elementos. El problema es que, por algún motivo, termino con muchos bytes cero al comienzo del archivo, aunque el elemento se eliminó correctamente. Le mostraré un par de capturas de pantalla para asegurarme de que me aclaro.Escribir en un archivo en Python inserta bytes nulos
Este es el archivo en Notepad ++ antes de ejecutar el programa:
Normal todo list http://img683.imageshack.us/img683/2812/beforew.png
Este es el archivo después de eliminar el punto 3 (contando desde 1):
Item 3 is gone, but there are NUL bytes http://img190.imageshack.us/img190/9387/afterj.png
Este es el código relevante. El programa real es más grande, pero ejecutar solo esta parte desencadena el error.
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()
¿Podría por favor señalar dónde está el error?
Muchas gracias. Tu respuesta fue tan buena como la de Forest, pero tuve que elegir una para aceptar, así que elegí la anterior. Nada personal. – Javier