본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/python

파이썬 학습] 폴더 이름 가져오기

by ToolBOX01 2026. 8. 5.
반응형

■ 폴더 이름 가져오기

저장소에 있는 파일들의 정보(이름,저장 날짜,파일 사이즈)를 가져오기 위해, 저장된 위치를 알아야 합니다. 파일썬 코드 내부에서 "대상(Target) 폴더"를 직접 입력 하면, 하위 "폴더 이름"만 가져오는 코드를 만들어 봅니다

 

▶ 파이썬 코드 : 특정 폴더 안에 들어있는 하위 폴더들의 이름만 쏙쏙 골라내는 프로그램

import os


def get_subdirectories_os(target_path):
    subdirs = []
    try:
        # os.scandir은 디렉토리 내부를 효율적으로 탐색합니다.
        with os.scandir(target_path) as entries:
            for entry in entries:
                if entry.is_dir():
                    subdirs.append(entry.name)
    except FileNotFoundError:
        print("지정한 폴더를 찾을 수 없습니다.")

    return subdirs


# 사용 예시
folder_path = r"C:\Your\Target\Folder"  # 본인의 폴더 경로로 수정하세요
folder_names = get_subdirectories_os(folder_path)

print("하위 폴더 목록:")
for name in folder_names:
    print(name)

 

1. 필요한 도구 가져오기 (import os)

import os

파이썬으로 컴퓨터의 파일이나 폴더를 다루려면 os라는 기본 도구 상자(패키지)가 필요합니다. import os는 "파이썬아, 운영체제(OS)와 소통할 수 있는 도구 상자(패키지)를 가져와 줘!"라고 명령하는 것입니다.

2. 함수 만들기 (def get_subdirectories_os(target_path))

def get_subdirectories_os(target_path):
    subdirs = []

 

  • def: 새로운 기능을 하는 함수(상자)를 만들겠다는 뜻입니다.
  • get_subdirectories_os: 우리가 만든 함수의 이름입니다. "OS 방식을 사용해서 하위 디렉토리(폴더)를 가져온다"는 의미를 담고 있어요.
  • target_path: 괄호 안에 있는 이 친구는 "어떤 폴더를 검사할 건지" 경로를 입력받는 매개변수(입력값)입니다.
  • subdirs = []: 나중에 찾아낸 하위 폴더들의 이름을 차곡차곡 담아둘 빈 바구니(리스트)를 준비하는 것입니다.

 

3. 안전장치 만들기 (try - except)

try:
        # 폴더 탐색 코드...



    except FileNotFoundError:
        print("지정한 폴더를 찾을 수 없습니다.")

 

  • 컴퓨터에게 길을 찾아달라고 할 때, 오타가 났거나 실제로 존재하지 않는 폴더 경로를 입력하면 프로그램이 에러를 내며 멈춰버립니다.
  • try는 "일단 이 코드를 실행해 봐!"라는 뜻이고, except FileNotFoundError는 "만약 그런 폴더가 없어서 에러가 나면 프로그램이 뻗어버리게 두지 말고, 친절하게 '지정한 폴더를 찾을 수 없습니다'라는 안내 메시지를 보여줘!"라는 안전장치입니다.

4. 폴더 안을 샅샅이 살펴보기 (os.scandir)

with os.scandir(target_path) as entries:
            for entry in entries:
                if entry.is_dir():
                    subdirs.append(entry.name)

 

 

  • os.scandir(target_path): 지정한 폴더 안의 문을 열고 들어가 안에 무엇이 있는지 목록을 쫙 뽑아주는 효율적인 함수입니다. with 문을 쓰면 탐색이 끝난 후 알아서 문을 닫아주어 안전합니다.
  • for entry in entries:: 폴더 안에서 발견된 하나하나의 파일이나 폴더들을 (entry라는 이름으로) 반복문으로 순서대로 꺼내 확인합니다.
  • if entry.is_dir():: "지금 꺼낸 게 파일이니, 아니면 폴더(directory니)?" 하고 물어보는 조건문입니다. 오직 폴더일 때만 참(True)이 됩니다. (파일은 제외!)
  • subdirs.append(entry.name): 폴더가 맞다면, 그 폴더의 이름(entry.name)만 아까 준비해 둔 빈 바구니(subdirs)에 쏙 집어넣습니다(append).

 

파이썬에서 with ~ as 구문은 프로그램의 자원 관리(Resource Management)를 안전하고 깔끔하게 처리하기 위해 사용하는 문법입니다. 쉽게 말해, "어떤 일을 시작할 때 자동으로 준비(Setup)를 하고, 그 일이 끝나면 (에러가 나든 안 나든) 무조건 뒷정리(Cleanup)를 알아서 해주는 기능"입니다.

5. 결과 돌려주기 (return subdirs)

return subdirs

반복문이 끝나고 폴더 이름들이 가득 찬 바구니를 함수 바깥으로 최종적으로 건네주는(반환하는) 역할입니다.

6. 실제로 사용해 보기 (실행부)

# 사용 예시
folder_path = r"C:\Your\Target\Folder"  # 본인의 폴더 경로로 수정하세요
folder_names = get_subdirectories_os(folder_path)

print("하위 폴더 목록:")
for name in folder_names:
    print(name)

 

  • folder_path = r"...": 탐색하고 싶은 내 컴퓨터의 실제 폴더 경로를 적어줍니다. 앞에 붙은 r은 경로 안의 백슬래시(\)를 파이썬이 이상하게 해석하지 않도록 그대로 읽어달라는 특별한 표시입니다.
  • folder_names = ...: 아까 만든 함수에 경로를 쏙 집어넣어, 결과로 나온 폴더 이름 리스트를 folder_names 변수에 담습니다.
  • 마지막 for문: 바구니에 담긴 폴더 이름들을 하나씩 화면에 예쁘게 출력(print)해 줍니다.

 


폴더 선택 창(File Dialog) 을 사용하는 방법 

Windows 탐색기처럼 폴더 선택 창이 열리고, 마우스로 폴더를 선택할 수 있습니다. 사용자가 경로를 직접 입력할 필요가 없어 실수도 줄어듭니다. tkinter는 별도로 설치할 필요가 없습니다. Python 3.12에서도 기본으로 포함되어 있습니다.

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

folder_path = filedialog.askdirectory(title="검색할 폴더를 선택하세요")

print(folder_path)

 

import os
import tkinter as tk
from tkinter import filedialog


def get_subdirectories(target_path):
    """
    지정한 폴더의 바로 아래 하위 폴더 목록을 반환
    """
    subdirs = []

    try:
        with os.scandir(target_path) as entries:
            for entry in entries:
                if entry.is_dir():
                    # os.path.normpath를 사용하여 운영체제에 맞는 경로 형식(윈도우는 \)으로 변환
                    normalized_path = os.path.normpath(entry.path)
                    subdirs.append(normalized_path)

    except FileNotFoundError:
        print("지정한 폴더를 찾을 수 없습니다.")
        return []

    except PermissionError:
        print("폴더에 접근할 권한이 없습니다.")
        return []

    return sorted(subdirs)


def main():
    # Tkinter 창 숨기기
    root = tk.Tk()
    root.withdraw()

    # 항상 위에 표시
    root.attributes("-topmost", True)

    # 폴더 선택 창
    folder_path = filedialog.askdirectory(
        title="검색할 폴더를 선택하세요"
    )

    # 취소 버튼을 누른 경우
    if not folder_path:
        print("폴더 선택이 취소되었습니다.")
        return

    print("=" * 60)
    print("선택한 폴더")
    print(folder_path)
    print("=" * 60)

    folder_names = get_subdirectories(folder_path)

    if len(folder_names) == 0:
        print("하위 폴더가 없습니다.")
    else:
        print(f"하위 폴더 ({len(folder_names)}개)")
        print("-" * 60)

        for i, name in enumerate(folder_names, start=1):
            print(f"{i:3d}. {name}")


if __name__ == "__main__":
    main()

subdirs.append(entry.name) ➔ subdirs.append(entry.path)
기존에는 폴더 이름(예: project_a)만 리스트에 담았지만, entry.path로 변경함으로써 예시로 주신 것처럼 d:\cad\project_a 형태의 절대 경로가 리스트에 담기게 됩니다.

get_folder_name.py
0.00MB

실행 결과 예 :  예를 들어 선택한 폴더가 G:\00PythonProjects

폴더 구조 콘솔
G:\00PythonProjects

├─ Project_A
├─ Project_B
├─ PythonStudy
├─ Image
└─ Temp
============================================================
선택한 폴더
G:\00PythonProjects
============================================================
하위 폴더 (5개)
------------------------------------------------------------
  1. Image
  2. Project_A
  3. Project_B
  4. PythonStudy
  5. Temp

이 코드를 확장하여 선택한 폴더 아래의 모든 하위 폴더를 재귀적으로 탐색하고, .prt, .asm, .drw 파일만 찾아 CSV나 TXT로 저장하는 기능을 추가 가능 합니다. 저장된 


by korealionkk@gmail.com

반응형