Piszę program listy zadań. Utrzymuje plik z rzeczą do zrobienia na linię i pozwala użytkownikowi dodawać lub usuwać przedmioty. Problem polega na tym, że z jakiegoś powodu na początku pliku kończę z dużą ilością zerowych bajtów, mimo że przedmiot został poprawnie usunięty. Pokażę ci kilka zrzutów ekranu, żeby się upewnić.Zapisywanie do pliku w Pythonie wstawia bajty null
Jest to plik w Notepad ++ przed uruchomieniem programu:
Normal todo list http://img683.imageshack.us/img683/2812/beforew.png
Jest to plik po usunięciu pkt 3 (licząc od 1):
Item 3 is gone, but there are NUL bytes http://img190.imageshack.us/img190/9387/afterj.png
Jest to odpowiedni kod. Rzeczywisty program jest większy, ale uruchomienie tylko tej części powoduje błąd.
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()
Czy możesz wskazać, gdzie jest błąd?
Wielkie dzięki. Twoja odpowiedź była tak dobra, jak Forest, ale musiałem wybrać jedną, aby zaakceptować, więc wybrałem wcześniejszą. Nic osobistego. – Javier