J'écris un programme de liste de tâches. Il conserve un fichier avec une chose à faire par ligne, et permet à l'utilisateur d'ajouter ou de supprimer des éléments. Le problème est que pour une raison quelconque, je me retrouve avec beaucoup d'octets zéro au début du fichier, même si l'élément est correctement supprimé. Je vais vous montrer quelques captures d'écran pour m'assurer que je suis clair.Écrire dans un fichier en Python insère des octets nuls
Ceci est le fichier dans le Bloc-notes ++ avant d'exécuter le programme:
Normal todo list http://img683.imageshack.us/img683/2812/beforew.png
Ceci est le fichier après la suppression du point 3 (en comptant à partir de 1):
Item 3 is gone, but there are NUL bytes http://img190.imageshack.us/img190/9387/afterj.png
Ceci est le code pertinent. Le programme actuel est plus grand, mais l'exécution de cette partie déclenche l'erreur.
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()
Pourriez-vous s'il vous plaît indiquer où est l'erreur?
Merci beaucoup. Votre réponse était aussi bonne que celle de Forest, mais je devais en choisir une à accepter, alors j'ai choisi la première. Rien de personnel. – Javier