Python 디렉토리 구조 다루기: os 모듈을 사용한 파일 및 폴더 탐색

많은 초보자들이 Python을 처음 배우면서 디렉토리 구조를 어떻게 탐색하고 파일을 다루는지 막막하게 느낍니다. 하지만 Python 디렉토리 구조를 이해하고, 이를 다루는 os 모듈을 사용하면 파일 및 폴더 탐색이 한결 수월해집니다. 이 포스트에서는 os 모듈을 사용하여 파일과 디렉토리를 탐색하는 방법을 자세히 알아보겠습니다. 이를 통해 여러분도 효율적인 파일 처리가 가능하며, 복잡한 디렉토리 구조를 쉽게 관리할 수 있게 될 것입니다.

python 디렉토리 포스트 그림

os 모듈을 사용한 디렉토리 탐색의 기초

Python에서 디렉토리 구조를 다루기 위해서는 os 모듈에 대한 이해가 필수적입니다. os 모듈은 Python의 표준 라이브러리로, 운영 체제와 상호작용하여 파일과 디렉토리 관련 작업을 처리할 수 있게 해줍니다. 이를 사용하면 Python 프로그램에서 다양한 파일 및 폴더 작업을 쉽게 자동화할 수 있습니다.

Python 디렉토리 구조 다루기 포스트 그림2

os.listdir()로 디렉토리 목록 가져오기

os 모듈의 listdir() 함수는 디렉토리 내에 있는 파일과 폴더의 목록을 가져오는 데 사용됩니다. 다음과 같이 매우 간단하게 사용할 수 있습니다:

import os

dir_path = "C:/Users/user/Documents"
file_list = os.listdir(dir_path)
print(file_list)

위 코드는 지정된 디렉토리 경로(C:/Users/user/Documents)에 있는 모든 파일과 폴더 목록을 리스트로 반환합니다. 파일 이름만 반환하기 때문에 후속 처리를 통해 필요한 작업을 수행할 수 있습니다. 이때 중요한 점은 listdir()이 현재 디렉토리 내의 숨겨진 파일이나 시스템 파일도 포함하여 출력한다는 점입니다.

os.path.join()으로 경로 안전하게 결합하기

파일이나 폴더 경로를 결합할 때 경로 구분자를 직접 입력하기보다, os.path.join()을 사용하는 것이 안전합니다. 이 함수는 운영 체제에 따라 적절한 구분자를 자동으로 사용해 경로를 생성해 줍니다.

import os

base_path = "C:/Users/user/Documents"
file_name = "example.txt"
full_path = os.path.join(base_path, file_name)
print(full_path)

위 코드를 실행하면 해당 파일이 위치한 경로와 그 파일의 이름/확장자가 출력됩니다. 운영 체제마다 경로 구분자가 다르기 때문에, 이 방법을 사용하면 코드의 호환성을 높일 수 있습니다.

Python 디렉토리 구조 탐색의 고급 사용법

디렉토리 내의 파일을 리스트로 가져오는 것 외에도, os 모듈을 활용하면 여러 디렉토리와 하위 디렉토리를 쉽게 탐색할 수 있습니다. 이를 통해 복잡한 디렉토리 구조에서도 원하는 파일을 빠르게 찾을 수 있습니다.

Python 디렉토리 구조 다루기 포스트 그림3

os.walk()로 모든 디렉토리 및 파일 탐색

os.walk()는 디렉토리 트리를 순회하면서 모든 파일과 폴더를 탐색하는 데 유용합니다. 이 함수는 기본적으로 세 개의 값을 반환합니다: 현재 디렉토리 경로, 그 디렉토리 내의 폴더 목록, 그리고 파일 목록입니다. 아래 코드를 참고하세요:

import os

for dirpath, dirnames, filenames in os.walk("C:/Users/user/Documents"):
    print(f"현재 디렉토리 경로: {dirpath}")
    print(f"폴더 목록: {dirnames}")
    print(f"파일 목록: {filenames}")

이 코드는 지정된 경로 아래에 있는 모든 폴더와 파일을 탐색하며, 각 디렉토리의 구조를 한 번에 파악할 수 있게 해줍니다. 특히 복잡한 디렉토리 구조를 처리할 때 매우 유용합니다.

파일 확장자로 필터링하기

디렉토리 안에 다양한 종류의 파일이 있을 때, 특정 확장자만 필터링하고 싶을 수 있습니다. 예를 들어, “.png” 파일만 목록으로 가져오고 싶다면 아래와 같이 코드를 작성할 수 있습니다:

import os

dir_path = "C:/Users/user/Documents"
png_files = [file for file in os.listdir(dir_path) if file.endswith(".png")]
print(png_files)

위 코드는 list comprehension을 사용하여 .png로 끝나는 파일만 리스트에 담습니다. 이 방법을 통해 원하는 파일 형식만 선택하여 처리할 수 있습니다.

os 모듈의 유용한 추가 함수들

이외에도 os 모듈은 파일 처리 시 유용한 함수들을 많이 제공합니다. 몇 가지 주요 함수들을 살펴보겠습니다.

Python 디렉토리 구조 다루기 포스트 그림4

os.mkdir()와 os.makedirs()로 디렉토리 생성

파일을 다루다 보면 새로운 디렉토리를 생성해야 할 경우가 많습니다. os.mkdir() 함수는 단일 디렉토리를 생성할 때 사용되며, os.makedirs()는 상위 디렉토리까지 포함하여 필요한 모든 디렉토리를 한 번에 생성할 수 있습니다.

import os

# 단일 디렉토리 생성
os.mkdir("C:/Users/user/Documents/new_folder")

# 하위 디렉토리 포함 생성
os.makedirs("C:/Users/user/Documents/new_folder/sub_folder")

os.remove()로 파일 삭제하기

파일을 삭제해야 할 때는 os.remove() 함수를 사용할 수 있습니다. 단, 이 함수는 디렉토리가 아닌 파일만 삭제할 수 있습니다.

import os

file_path = "C:/Users/user/Documents/example.txt"
os.remove(file_path)

os.rmdir()와 shutil.rmtree()로 디렉토리 삭제

디렉토리를 삭제하려면 os.rmdir()를 사용할 수 있지만, 이 함수는 비어 있는 디렉토리만 삭제할 수 있습니다. 만약 디렉토리 내부에 파일이 있다면 shutil.rmtree()를 사용해야 합니다.

import os
import shutil

# 빈 디렉토리 삭제
os.rmdir("C:/Users/user/Documents/new_folder")

# 하위 파일 포함 디렉토리 삭제
shutil.rmtree("C:/Users/user/Documents/new_folder")

정리하기: Python 디렉토리 탐색의 완벽한 이해

이 포스트에서는 Python에서 디렉토리 구조를 탐색하고 파일을 다루는 방법을 배웠습니다. os 모듈을 사용하면 디렉토리 탐색부터 파일 생성 및 삭제까지 다양한 작업을 쉽게 처리할 수 있습니다. 이러한 기초적인 Python 디렉토리 탐색 기술은 앞으로 더 복잡한 프로젝트를 수행하는 데 큰 도움이 될 것입니다.

Python 디렉토리 구조 다루기 포스트 그림5

Python 디렉토리 구조를 효율적으로 다루고 싶은 초보자라면, 위에서 소개한 방법들을 통해 더욱 간편하게 파일 및 디렉토리를 처리해보세요. 위 내용을 이해하고 나면 우리는 어떤 것을 할 수 있을까요? 궁금하시면 여기를 클릭해보세요!

유사한 게시물