Python 디렉토리 구조 다루기: os 모듈을 사용한 파일 및 폴더 탐색
많은 초보자들이 Python을 처음 배우면서 디렉토리 구조를 어떻게 탐색하고 파일을 다루는지 막막하게 느낍니다. 하지만 Python 디렉토리 구조를 이해하고, 이를 다루는 os 모듈을 사용하면 파일 및 폴더 탐색이 한결 수월해집니다. 이 포스트에서는 os 모듈을 사용하여 파일과 디렉토리를 탐색하는 방법을 자세히 알아보겠습니다. 이를 통해 여러분도 효율적인 파일 처리가 가능하며, 복잡한 디렉토리 구조를 쉽게 관리할 수 있게 될 것입니다.
os 모듈을 사용한 디렉토리 탐색의 기초
Python에서 디렉토리 구조를 다루기 위해서는 os 모듈에 대한 이해가 필수적입니다. os 모듈은 Python의 표준 라이브러리로, 운영 체제와 상호작용하여 파일과 디렉토리 관련 작업을 처리할 수 있게 해줍니다. 이를 사용하면 Python 프로그램에서 다양한 파일 및 폴더 작업을 쉽게 자동화할 수 있습니다.
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 모듈을 활용하면 여러 디렉토리와 하위 디렉토리를 쉽게 탐색할 수 있습니다. 이를 통해 복잡한 디렉토리 구조에서도 원하는 파일을 빠르게 찾을 수 있습니다.
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 모듈은 파일 처리 시 유용한 함수들을 많이 제공합니다. 몇 가지 주요 함수들을 살펴보겠습니다.
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 디렉토리 구조를 효율적으로 다루고 싶은 초보자라면, 위에서 소개한 방법들을 통해 더욱 간편하게 파일 및 디렉토리를 처리해보세요. 위 내용을 이해하고 나면 우리는 어떤 것을 할 수 있을까요? 궁금하시면 여기를 클릭해보세요!