Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 디렉토리를 재귀적으로 탐색하는 방법

Python에서는 os.walk 함수를 사용해 디렉토리 트리를 손쉽게 순회할 수 있습니다. 이 함수는 지정한 최상위 디렉토리부터 시작해 하위 폴더까지 재귀적으로 탐색하며, 각 단계마다 현재 경로, 하위 디렉토리 목록, 파일 목록을 차례로 반환합니다.

예제

import os
for dirpath, dirs, files in os.walk("./my_directory/"):
    for filename in files:
        fname = os.path.join(dirpath, filename)
        with open(fname) as myfile:
            print(myfile.read())

위 프로그램은 my_directory 트리 전체를 재귀적으로 순회하며, 발견한 모든 파일의 내용을 콘솔에 출력합니다.

os.walk의 동작 방식

os.walk는 반복할 때마다 다음 세 가지 값을 반환합니다.

  • dirpath: 현재 탐색 중인 디렉토리의 경로 문자열입니다.
  • dirs: 해당 디렉토리 안에 있는 하위 디렉토리 이름 목록입니다.
  • files: 해당 디렉토리 안에 있는 일반 파일 이름 목록입니다.

os.walk는 기본적으로 상단에서 하단(top-down) 방향으로 탐색합니다. 만약 하위 디렉토리를 먼저 처리하고 싶다면 topdown=False 옵션을 지정하면 됩니다.

pathlib를 활용한 대안

Python 3.4 이상에서는 객체 지향적인 경로 처리가 가능한 pathlib 모듈을 사용하는 것도 좋은 선택입니다.

from pathlib import Path

for path in Path("./my_directory").rglob("*"):
    if path.is_file():
        with open(path) as myfile:
            print(myfile.read())

Path.rglob("*")는 모든 하위 항목을 재귀적으로 찾아주므로, 코드가 더 간결하고 가독성이 높아집니다. 상황에 맞게 두 방식을 골라 사용하면 됩니다.