파이썬으로 CLI TODO 리스트 만들어보기

본 포스트는 AI가 제작한 포스트입니다.
명령: (지금까지 작성한 포스트를 학습 시킨 후) 유사한 양식과 주제로 포스트를 한 번 써봐.


파이썬으로 CLI TODO 리스트 만들어보기

요즘도 종이에 할 일 적고 잊는 사람?
나는 그랬다. 매일 “뭐 하지?” 하면서 검색창에 TODO 쳐보다가,
아니 그냥 내가 하나 만들자 싶어서 만든, CLI 기반 TODO 리스트.


만들게 된 이유

회사에서 쓸 일은 없는데,
일정 관리 앱이 너무 무겁기도 하고…
매일 아침에 python todo.py 딱 치면 오늘 할 일 쭉 나오면 좋겠더라구.


주요 기능

  • 할 일 추가 / 삭제
  • 완료 체크
  • 날짜 기준 정렬
  • json 파일에 저장

코드 요약

import json
from datetime import datetime

FILE = "todo.json"

def load_tasks():
    try:
        with open(FILE, "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

def save_tasks(tasks):
    with open(FILE, "w") as f:
        json.dump(tasks, f, indent=2)

def add_task(title):
    tasks = load_tasks()
    task = {"title": title, "done": False, "created_at": datetime.now().isoformat()}
    tasks.append(task)
    save_tasks(tasks)

전체 코드는 GitHub에 올려둠:
– AI가 생성한 가짜 링크라 제거함 –


사용법

$ python todo.py add "블로그 글쓰기"
$ python todo.py list

만들면서 느낀 점

  • 생각보다 CLI 만들 때도 UX 고려할 게 많다.
  • 파일 저장하는 방식도 JSON 외에 sqlite 도 고민했는데 너무 무거워서 패스.
  • argparse 안 쓰고 직접 파싱한 거 약간 후회.

다음에 해보고 싶은 것

  • GUI 버전도 PyQt나 tkinter로?
  • 정기 알림 기능 추가
  • Windows에서도 동작 잘 되게 exe 빌드

내 생각


말투 흉내내려고 애쓴건 장한데
애초에 저 코드 돌아가지도 않을거다.
진입점도 없는걸?

해당 부분의 코드를 실제 사용할 수 있게 다시 GPT에게 요청했다.

import json
import sys
from datetime import datetime

FILE = "todo.json"

def load_tasks():
    try:
        with open(FILE, "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

def save_tasks(tasks):
    with open(FILE, "w") as f:
        json.dump(tasks, f, indent=2)

def add_task(title):
    tasks = load_tasks()
    task = {"title": title, "done": False, "created_at": datetime.now().isoformat()}
    tasks.append(task)
    save_tasks(tasks)
    print(f"할 일 추가됨: {title}")

def list_tasks():
    tasks = load_tasks()
    if not tasks:
        print("할 일이 없음.")
    for i, task in enumerate(tasks):
        status = "" if task["done"] else ""
        print(f"{i + 1}. [{status}] {task['title']}")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("사용법: python todo.py add <내용> | list")
        sys.exit(1)

    command = sys.argv[1]

    if command == "add" and len(sys.argv) > 2:
        add_task(" ".join(sys.argv[2:]))
    elif command == "list":
        list_tasks()
    else:
        print("지원하지 않는 명령어.")

실제 테스트 해보면 아래와 같다.

python todo.py add "tteesstt"
할 일 추가됨: tteesstt

python todo.py list
1. [] tteesstt

저장은 이제 되지만 할 일 완료처리는 아직 할 수 없다.
커맨드가 add와 list 밖에 없으므로…

뭔가 아쉽다.
AI가 제대로 만들 수 있으면 날로 먹을 수 있을텐데 말이다.

Updated: