🐍 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ẽ:
- Đọc danh sách công việc từ file CSV (
tasks.csv
). - Hiển thị danh sách cho người dùng chọn.
- Cho phép đánh dấu 1 task là "Done".
- 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
- Thử chạy code và đánh dấu một công việc.
- Tạo thêm công việc mới trong file CSV và kiểm tra lại.
- (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é!