본문 바로가기

강의/Python 기초

Chapter 24. 파일 탐색기 만들기

반응형

폴더 이동 및 파일 열기

이번 시간에는 파이썬으로 간단한 파일 탐색기 프로그램을 만들어 보겠습니다.

파일 탐색기는 컴퓨터 안에 있는 폴더와 파일을 보여 주고, 폴더를 이동하거나 파일을 열 수 있게 도와주는 프로그램입니다.


1. 파일 탐색기 프로그램 기능

이번 프로그램에는 다음 기능이 들어갑니다.

  • 현재 폴더 안의 파일 목록 보기
  • 폴더 더블클릭하면 안으로 이동하기
  • 파일 더블클릭하면 실행하기
  • 상위 폴더로 이동하기
  • 현재 위치 표시하기

2. 전체 소스 코드

import os
import tkinter as tk
from tkinter import messagebox


# 현재 폴더 경로
current_path = os.getcwd()


# 파일 목록을 화면에 보여주는 함수
def show_files():
    # 경로 표시
    path_label.config(text=f"현재 위치 : {current_path}")

    # 리스트 박스 비우기
    file_listbox.delete(0, tk.END)

    try:
        # 현재 폴더 안의 파일과 폴더 가져오기
        files = os.listdir(current_path)

        # 폴더는 [폴더] 표시, 파일은 [파일] 표시
        for file in files:
            full_path = os.path.join(current_path, file)

            if os.path.isdir(full_path):
                file_listbox.insert(tk.END, f"[폴더] {file}")
            else:
                file_listbox.insert(tk.END, f"[파일] {file}")

    except PermissionError:
        messagebox.showerror("오류", "이 폴더에 접근할 수 없습니다.")


# 더블클릭했을 때 실행되는 함수
def open_item(event):
    global current_path

    # 선택한 항목 가져오기
    selected = file_listbox.curselection()

    if not selected:
        return

    item = file_listbox.get(selected[0])

    # [폴더], [파일] 글자 제거
    name = item.replace("[폴더] ", "").replace("[파일] ", "")

    # 전체 경로 만들기
    full_path = os.path.join(current_path, name)

    # 폴더이면 폴더 안으로 이동
    if os.path.isdir(full_path):
        current_path = full_path
        show_files()

    # 파일이면 파일 열기
    else:
        try:
            os.startfile(full_path)  # 윈도우에서 파일 열기
        except:
            messagebox.showerror("오류", "파일을 열 수 없습니다.")


# 상위 폴더로 이동하는 함수
def go_parent_folder():
    global current_path

    # 현재 폴더의 부모 폴더로 이동
    current_path = os.path.dirname(current_path)
    show_files()


# tkinter 창 만들기
root = tk.Tk()
root.title("파이썬 파일 탐색기")
root.geometry("700x500")

# 제목
title_label = tk.Label(root, text="파이썬 파일 탐색기", font=("맑은 고딕", 18, "bold"))
title_label.pack(pady=10)

# 현재 경로 표시
path_label = tk.Label(root, text="", font=("맑은 고딕", 10), wraplength=650)
path_label.pack(pady=5)

# 상위 폴더 버튼
parent_button = tk.Button(root, text="상위 폴더로 이동", command=go_parent_folder)
parent_button.pack(pady=5)

# 파일 목록 리스트 박스
file_listbox = tk.Listbox(root, font=("맑은 고딕", 12), width=70, height=18)
file_listbox.pack(pady=10)

# 더블클릭 이벤트 연결
file_listbox.bind("<Double-Button-1>", open_item)

# 처음 파일 목록 보여주기
show_files()

# 프로그램 실행
root.mainloop()

3. 실행 방법

  1. 위 코드를 chapter24.py 파일로 저장합니다.
  2. 파이썬에서 실행합니다.
python chapter24.py
  1. 프로그램 창이 열리면 현재 폴더의 파일과 폴더가 보입니다.
  2. 폴더를 더블클릭하면 그 폴더 안으로 이동합니다.
  3. 파일을 더블클릭하면 해당 파일이 열립니다.

4. 소스 코드 설명

1) 필요한 도구 가져오기

import os
import tkinter as tk
from tkinter import messagebox

os는 컴퓨터의 폴더와 파일을 다룰 때 사용합니다.
tkinter는 화면이 있는 GUI 프로그램을 만들 때 사용합니다.
messagebox는 오류 메시지를 보여줄 때 사용합니다.


2) 현재 폴더 위치 저장하기

current_path = os.getcwd()

os.getcwd()는 지금 파이썬 프로그램이 실행되고 있는 폴더 위치를 알려줍니다.

예를 들어 프로그램이 C:\python 폴더에서 실행되면 현재 위치도 C:\python이 됩니다.


3) 파일 목록 보여주기

files = os.listdir(current_path)

os.listdir()은 현재 폴더 안에 있는 파일과 폴더 이름을 가져옵니다.

if os.path.isdir(full_path):
    file_listbox.insert(tk.END, f"[폴더] {file}")
else:
    file_listbox.insert(tk.END, f"[파일] {file}")

폴더이면 [폴더]라고 표시하고, 파일이면 [파일]이라고 표시합니다.


4) 폴더 더블클릭하면 이동하기

if os.path.isdir(full_path):
    current_path = full_path
    show_files()

선택한 것이 폴더라면 현재 위치를 그 폴더로 바꿉니다.
그리고 다시 파일 목록을 보여줍니다.

쉽게 말하면 폴더 문을 열고 안으로 들어가는 것과 같습니다.


5) 파일 더블클릭하면 열기

os.startfile(full_path)

os.startfile()은 파일을 실행하거나 열어주는 명령어입니다.

예를 들어 이미지 파일이면 사진 프로그램으로 열리고, 텍스트 파일이면 메모장으로 열릴 수 있습니다.

※ 이 코드는 윈도우에서 사용하기 좋습니다.


6) 상위 폴더로 이동하기

current_path = os.path.dirname(current_path)

os.path.dirname()은 현재 폴더의 한 단계 위 폴더를 알려줍니다.

예를 들어 현재 위치가

C:\python\project

라면 상위 폴더는

C:\python

이 됩니다.


 

5. 실행 결과 예시

프로그램을 실행하면 이런 화면이 나옵니다.

파이썬 파일 탐색기

현재 위치 : C:\python

[폴더] project
[폴더] image
[파일] memo.txt
[파일] test.py
[파일] photo.png

폴더를 더블클릭하면 폴더 안으로 이동합니다.
파일을 더블클릭하면 파일이 열립니다.


6. 이번 예제에서 배운 내용

이번 파일 탐색기 프로그램을 만들면서 다음 내용을 배웠습니다.

  • os.getcwd()로 현재 폴더 확인하기
  • os.listdir()로 파일 목록 가져오기
  • os.path.isdir()로 폴더인지 확인하기
  • os.path.join()으로 정확한 파일 경로 만들기
  • tkinter Listbox로 목록 화면 만들기
  • 더블클릭 이벤트 사용하기
  • 파일 열기 기능 만들기

7. 마무리

이번에는 파이썬으로 간단한 파일 탐색기 프로그램을 만들어 보았습니다.

처음에는 파일 목록만 보여주는 간단한 프로그램이지만, 기능을 더 추가하면 실제 윈도우 탐색기처럼 발전시킬 수 있습니다.

예를 들어 다음 기능도 추가할 수 있습니다.

  • 파일 삭제 기능
  • 파일 이름 변경 기능
  • 새 폴더 만들기
  • 파일 복사 기능
  • 파일 검색 기능

파이썬의 os 모듈과 tkinter를 함께 사용하면 컴퓨터 파일을 다루는 프로그램을 쉽게 만들 수 있습니다.


파일 탐색기 만들기

반응형