Python에서 파일 및 디렉터리 이름 목록을 가져옵니다.

사업

Python에서 파일 및 디렉토리 이름(폴더 이름) 목록을 얻으려면 os 모듈 함수 os.listdir()을 사용하십시오.

os.listdir(path=’.’)
경로로 지정된 디렉토리의 항목 이름을 포함하는 목록을 반환합니다.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

os 모듈은 표준 라이브러리에 포함되어 있으므로 설치할 필요가 없습니다. 그러나 “가져오기”가 필요합니다.

다음 정보가 여기에 제공됩니다.

  • 파일 및 디렉토리 이름의 목록을 가져옵니다.
  • 파일 이름 목록만 가져오기
  • 디렉토리 이름 목록만 가져오기

다음은 파일(디렉토리) 구조의 예이다.

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

os.listdir() 외에도 glob 모듈을 사용하여 파일 및 디렉터리 이름(폴더 이름) 목록을 가져올 수도 있습니다. glob을 사용하면 와일드카드(*) 등을 사용하여 조건을 지정하고 하위 디렉터리를 재귀적으로 포함할 수 있습니다.

Python 3.4 이상에서는 경로를 객체로 조작할 수 있는 pathlib 모듈을 사용하여 파일 및 디렉토리 목록을 가져올 수도 있습니다. 위의 glob과 마찬가지로 조건부 및 재귀적으로 사용할 수도 있습니다.

파일 및 디렉토리 이름의 목록을 가져옵니다.

os.listdir()을 그대로 사용하면 파일과 디렉토리 이름의 목록이 반환됩니다.

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

당신이 얻는 것은 경로 문자열 목록입니다.

파일 이름 목록만 가져오기

파일 이름의 목록만 가져오려면 os.path.isfile() 함수를 사용하여 경로가 파일인지 확인합니다. os.path.isfile() 함수의 인자로 파일명만 전달하면 동작하지 않으므로 아래와 같이 전체 경로를 전달합니다.
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

디렉토리 이름 목록만 가져오기

디렉토리 이름의 목록만 얻으려면 같은 방식으로 os.path.isdir()을 사용하십시오.

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']