"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 하위 폴더를 재귀적으로 검색하고 파일을 검색하는 방법은 무엇입니까?

Python에서 하위 폴더를 재귀적으로 검색하고 파일을 검색하는 방법은 무엇입니까?

2024년 11월 16일에 게시됨
검색:309

How to Recursively Search Sub-Folders and Retrieve Files in Python?

재귀적 하위 폴더 검색 및 파일 검색

프로그래밍 영역에서는 디렉터리를 탐색하고 파일을 검색하는 것이 일반적인 작업일 수 있습니다. 효율적인 접근 방식 중 하나는 재귀 알고리즘을 사용하여 하위 폴더를 검색하고 특정 기준을 충족하는 파일 목록을 축적하는 것입니다.

문제 발생

사용자에게 장애물이 발생했습니다. 재귀 하위 폴더 검색에서 특정 파일 목록을 작성하려고 시도하는 동안. 이 문제는 파일이 포함된 현재 폴더 대신 하위 폴더 목록을 가져오는 하위 폴더 변수에서 발생합니다.

하위 폴더의 목적

하위 폴더 변수는 원하는 파일이 있는 기본 폴더 아래의 하위 폴더 이름 위치.

해결 방법

이 문제를 해결하는 열쇠는 "하위 폴더" 대신 "루트" 또는 "디렉터리 경로" 변수를 활용하는 것입니다. 이 변수는 재귀 중에 탐색되는 현재 디렉터리에 대한 절대 경로를 보유합니다. 이 경로를 fileNamePath 구성에 통합하면 원하는 정확성을 얻을 수 있습니다.

import os
result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']

Glob 모듈 향상

대안적이고 효율적인 접근 방식은 Python에 내장된 glob 모듈을 활용하는 것입니다. Glob은 확장자를 기반으로 파일을 선택하는 데 탁월합니다.

import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]

생성기 함수

간결하고 효율적인 구현을 위해 생성기 기능을 사용할 수도 있습니다.

from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))

Python 3.4 해결책

Python 3.4 이상을 사용하는 경우 pathlib 모듈의 rglob()을 활용할 수 있습니다. function.

from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))

이러한 접근 방식은 하위 폴더를 재귀적으로 검색하고 다음 항목의 목록을 컴파일하기 위한 효과적인 솔루션을 제공합니다. 파일이 원하는 기준을 충족하므로 파일 검색 작업이 쉬워집니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3