95  디렉토리 트리 생성기 (Directory Tree Generator)

사용자가 입력한 경로에 있는 디렉토리들을 나무(Tree) 모양의 구조로 시각화해 주는 프로그램을 만들어 봅시다. 파일과 디렉토리의 계층적 위치를 한눈에 파악할 수 있도록 돕는 유용한 도구입니다.

이 프로젝트는 파일 시스템의 재귀적(Recursive) 탐색 방법을 이해하고, 복잡한 데이터를 보기 좋게 출력하는 로직을 익히기에 아주 좋습니다. 특히 폴더 구조가 복잡할 때 프로젝트의 전체 구성을 빠르게 확인하는 용도로 활용할 수 있습니다.

95.1 주요 개발 포인트

  • 재귀적 파일 탐색: 하위 폴더와 그 안의 파일들을 깊이 우선 탐색(DFS) 방식으로 방문합니다.
  • 시각적 트리 표현: , ├─, └─와 같은 특수 문자를 사용하여 구조를 그립니다.
  • 필터링 및 제외 기능: .git, node_modules, __pycache__ 등 원치 않는 폴더를 숨기는 기능을 추가합니다.
  • 파일 정보 추가: 파일의 크기나 수정 날짜 등의 정보를 트리 옆에 함께 표시합니다.
  • 출력 형식 다양화: 콘솔 출력 외에도 텍스트 파일(txt), 마크다운(md), 또는 이미지로 저장할 수 있습니다.

95.2 Python 구현 예시 (간단한 디렉토리 트리 출력)

import os

def generate_tree(dir_path, prefix=""):
    """
    지정된 경로의 디렉토리와 파일을 트리 모양으로 출력합니다.
    """
    if not os.path.exists(dir_path):
        print(f"'{dir_path}' 경로를 찾을 수 없습니다.")
        return
    
    # 해당 디렉토리의 파일 및 폴더 목록 가져오기 (정렬)
    items = sorted(os.listdir(dir_path))
    
    for i, item in enumerate(items):
        item_path = os.path.join(dir_path, item)
        is_last = (i == len(items) - 1)
        
        # 기호 선택 (마지막 아이템은 └─, 아니면 ├─)
        symbol = "└── " if is_last else "├── "
        print(f"{prefix}{symbol}{item}")
        
        # 디렉토리인 경우 재귀적으로 하위 탐색
        if os.path.isdir(item_path):
            next_prefix = prefix + ("    " if is_last else "│   ")
            generate_tree(item_path, next_prefix)

if __name__ == "__main__":
    # 현재 디렉토리 트리 출력 테스트
    print("--- 디렉토리 트리 생성 ---")
    current_dir = "."
    generate_tree(current_dir)