Skip to main content

🐍 Ngày 32: Python hằng ngày 365 ngày - Quản lý To-Do List với CSV – Phần 2: Đánh dấu hoàn thành và ghi lại

· 3 min read

🎯 Mục tiêu

  • Đọc và ghi dữ liệu từ file .csv.
  • Cập nhật trạng thái công việc trong file.
  • Đánh dấu công việc là "Done".
  • Làm quen với thao tác ghi đè file CSV trong Python.

📚 Nội dung chính

Hôm nay, chúng ta sẽ:

  1. Đọc danh sách công việc từ file CSV (tasks.csv).
  2. Hiển thị danh sách cho người dùng chọn.
  3. Cho phép đánh dấu 1 task là "Done".
  4. Ghi kết quả trở lại vào file CSV.

🧠 Lưu ý kiến thức

  • Sử dụng csv.DictReader() để đọc file.
  • Sử dụng csv.DictWriter() để ghi lại.
  • Ghi đè file sẽ xóa toàn bộ nội dung cũ, nên cần ghi lại toàn bộ danh sách sau khi chỉnh sửa.

🧪 Ví dụ file tasks.csv

Task,Status
Chao co,Pending
Post Fanpage,Done
Post Group,Pending

🧑‍💻 Code mẫu

import csv

filename = "tasks.csv"

# Đọc danh sách từ file
def read_tasks():
tasks = []
with open(filename, mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
tasks.append(row)
return tasks

# Ghi danh sách trở lại file
def write_tasks(tasks):
with open(filename, mode='w', encoding='utf-8', newline='') as file:
writer = csv.DictWriter(file, fieldnames=["Task", "Status"])
writer.writeheader()
for task in tasks:
writer.writerow(task)

# Đánh dấu công việc hoàn thành
def mark_done(tasks):
print("\n📋 Danh sách công việc:")
for i, task in enumerate(tasks):
status = "✅" if task["Status"].lower() == "done" else "🔄"
print(f"{i + 1}. {task['Task']} [{status}]")

try:
choice = int(input("Nhập số thứ tự công việc muốn đánh dấu hoàn thành: "))
if 1 <= choice <= len(tasks):
tasks[choice - 1]["Status"] = "Done"
write_tasks(tasks)
print("🎉 Đã cập nhật trạng thái công việc!")
else:
print("⚠️ Lựa chọn không hợp lệ.")
except:
print("⚠️ Vui lòng nhập một số hợp lệ.")

# Chạy chương trình
def main():
tasks = read_tasks()
mark_done(tasks)

if __name__ == "__main__":
main()

🧾 Kết quả mong đợi

📺 Hướng dẫn chi tiết trên YouTube

Video hướng dẫn cách đánh dấu task đã hoàn thành bằng Python và ghi lại vào file CSV.

🎬 TikTok: Python To-Do List

Video ngắn tóm tắt quy trình xử lý file CSV với Python.

Sau khi chạy và đánh dấu, file tasks.csv sẽ được cập nhật, ví dụ:

Task,Status
Chao co,Done
Post Fanpage,Done
Post Group,Pending

✅ Bài tập

  1. Thử chạy code và đánh dấu một công việc.
  2. Tạo thêm công việc mới trong file CSV và kiểm tra lại.
  3. (Nâng cao) Gợi ý: Thêm lựa chọn xóa task, lọc theo trạng thái.

💬 Gợi ý mở rộng

  • Hiển thị màu sắc trạng thái trong terminal (dùng thư viện colorama).
  • Giao diện GUI đơn giản với Tkinter hoặc PyQt sau này.

📌 Hãy commit thành quả vào GitHub hoặc lưu lại để tiếp tục vào Ngày 33 nhé!