Tôi đang viết một chương trình danh sách việc cần làm. Nó giữ một tập tin với một điều cần làm trên mỗi dòng, và cho phép người dùng thêm hoặc xóa các mục. Vấn đề là vì lý do nào đó, tôi kết thúc với rất nhiều byte không ở đầu tệp, mặc dù mục đó bị xóa một cách chính xác. Tôi sẽ chỉ cho bạn một vài ảnh chụp màn hình để đảm bảo rằng tôi đang làm rõ.Ghi vào một tệp bằng Python chèn các byte rỗng
Đây là tập tin trong Notepad ++ trước khi chạy chương trình:
Normal todo list http://img683.imageshack.us/img683/2812/beforew.png
Đây là tập tin sau khi xóa mục 3 (tính từ 1):
Item 3 is gone, but there are NUL bytes http://img190.imageshack.us/img190/9387/afterj.png
Đây là mã có liên quan. Chương trình thực tế lớn hơn, nhưng chỉ chạy phần này sẽ kích hoạt lỗi.
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()
Bạn có thể vui lòng chỉ ra đâu là sai lầm?
Cảm ơn rất nhiều. Câu trả lời của bạn tốt như của Forest, nhưng tôi phải chọn một cái để chấp nhận vì vậy tôi đã chọn câu trả lời trước đó. Không có gì cá nhân. – Javier