>백엔드 개발 >파이썬 튜토리얼 >Python을 사용하여 하위 폴더 내의 파일을 효율적으로 검색하고 나열하려면 어떻게 해야 합니까?

Python을 사용하여 하위 폴더 내의 파일을 효율적으로 검색하고 나열하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-29 23:23:29659검색

How can I efficiently search for and list files within subfolders using Python?

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

여러 하위 폴더를 탐색하고 특정 파일을 추출해야 하는 시나리오를 접하는 것이 일반적입니다. 파일 확장자. 이 문제를 해결하는 한 가지 접근 방식은 디렉토리와 그 내용을 재귀적으로 탐색할 수 있는 Python의 내장 os.walk 함수를 활용하는 것입니다.

그러나 이 질문에서 볼 수 있듯이, 파일의 경로. os.walk에서 반환된 subFolder 변수는 각 파일이 있는 특정 폴더가 아닌 하위 폴더 목록을 나타냅니다.

이 문제를 해결하려면 올바른 접근 방식은 dirpath(또는 해당 코드의 루트)를 활용하는 것입니다. , 이는 반복의 현재 디렉터리를 나타냅니다. 전체 파일 경로를 구성하려면 dirpath 값을 파일 이름과 연결해야 합니다.

또한 재귀 프로세스에서 특정 폴더 정리와 같은 추가 요소를 고려하는 것이 중요합니다. 이는 dn을 검사하여 수행할 수 있습니다. (dirname) 목록입니다. 파일 확장자 확인 시 문자열 조작에 의존하지 않으려면 os.path.splitext 함수를 활용할 수 있습니다.

다음은 이러한 향상된 기능을 통합하는 최적화된 코드 버전입니다.

<code class="python">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"
]</code>

대안으로, glob은 확장자를 기반으로 파일을 선택하는 데 사용할 수 있는 또 다른 강력한 도구입니다. 다음은 glob을 사용하는 예입니다.

<code class="python">import os
from glob import glob

result = [
    y
    for x in os.walk(PATH)
    for y in glob(os.path.join(x[0], "*.txt"))
]</code>

Python 3.4의 경우 Pathlib는 이 작업에 대한 직관적인 접근 방식을 제공합니다.

<code class="python">from pathlib import Path

result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>

위 내용은 Python을 사용하여 하위 폴더 내의 파일을 효율적으로 검색하고 나열하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.