Python의 디렉터리 및 하위 디렉터리에 있는 모든 파일 나열

Fariba Laiq 2023년1월30일
  1. os.walk()를 사용하여 Python의 디렉토리 및 하위 디렉토리에 있는 모든 파일 나열
  2. listdir()을 사용하여 Python의 디렉토리 및 하위 디렉토리에 있는 모든 파일 나열
  3. glob을 사용하여 Python의 디렉토리 및 하위 디렉토리에 있는 모든 파일 나열
Python의 디렉터리 및 하위 디렉터리에 있는 모든 파일 나열

Python은 디렉토리 및 하위 디렉토리에 있는 파일 목록에 액세스하는 다양한 방법을 제공합니다. 이 가이드는 os.walk(), listdir(), glob에 대해 설명합니다.

os.walk()를 사용하여 Python의 디렉토리 및 하위 디렉토리에 있는 모든 파일 나열

Python의 os 모듈은 운영 체제와 상호 작용하는 수단을 제공합니다. 파일 시스템을 처리하는 많은 내장 기능이 있습니다.

이 모듈을 사용하여 디렉토리를 가져오고, 만들고, 제거하고 변경할 수 있습니다. walk()는 하향식 또는 상향식으로 이동하여 디렉토리 트리에서 파일 이름을 생성하는 재귀적 방법입니다.

다음 코드에서는 MyFolder의 디렉토리와 하위 디렉토리에 있는 파일을 표시했습니다. 우리의 경우 이 폴더는 Python 환경의 홈 디렉토리에 있습니다.

예제 코드:

import os

root = "MyFolder"
for path, subdirs, files in os.walk(root):
    for name in files:
        print(os.path.join(path, name))

출력:

MyFolder\text_file1.txt
MyFolder\text_file2.txt
MyFolder\SubFolder1\text_file3.txt
MyFolder\SubFolder1\text_file4.txt

listdir()을 사용하여 Python의 디렉토리 및 하위 디렉토리에 있는 모든 파일 나열

다음 코드에서는 walk 메서드를 사용하지 않고 디렉토리 트리를 탐색하고 해당 파일과 하위 파일에 액세스합니다. 루트 폴더 MyFolder를 시작점으로 지정했습니다.

그런 다음 listdir()을 사용하여 해당 폴더의 디렉토리와 하위 디렉토리에 액세스하고 항목에 저장했습니다. 항목 이름을 이전 경로와 연결하고 isdir() 메서드를 사용하여 디렉터리인지 확인했습니다.

그렇다면 해당 디렉토리를 더 검색하고 동일한 절차를 적용합니다. 파일명인 경우 이전 경로에 파일명을 추가하여 표시했습니다.

예제 코드:

import os

root = "MyFolder"
files = []
walk = [root]
while walk:
    folder = walk.pop(0) + "/"
    items = os.listdir(folder)  # items = folders + files
    for i in items:
        i = folder + i
        (walk if os.path.isdir(i) else files).append(i)
print(files)

출력:

['MyFolder/text_file1.txt', 'MyFolder/text_file2.txt', 'MyFolder/SubFolder1/text_file3.txt', 'MyFolder/SubFolder1/text_file4.txt']

glob을 사용하여 Python의 디렉토리 및 하위 디렉토리에 있는 모든 파일 나열

globglobal을 나타내는 Python의 내장 모듈입니다. 이 모듈은 이름과 확장자가 특정 패턴과 일치하는 모든 파일 경로를 반환합니다.

여기에서는 확장자가 있는 모든 파일 이름을 나타내는 *.*를 사용했습니다. glob.glob()을 사용하여 디렉토리 또는 하위 디렉토리 내에서 재귀적으로 파일을 찾습니다.

** 패턴은 recursive가 True로 설정된 경우 모든 파일과 0개 이상의 폴더 및 하위 디렉토리와 일치합니다.

예제 코드:

import glob

path = "MyFolder\**\*.*"
for file in glob.glob(path, recursive=True):
    print(file)

출력:

MyFolder\text_file1.txt
MyFolder\text_file2.txt
MyFolder\SubFolder1\text_file3.txt
MyFolder\SubFolder1\text_file4.txt
작가: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

관련 문장 - Python Directory