파이썬으로 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가 제대로 만들 수 있으면 날로 먹을 수 있을텐데 말이다.