서브 디렉토리 별로 포함된 이미지 파일을 딕셔너리에 저장하는 파이썬 코드
서브 디렉토리 별로 포함된 이미지 파일을 딕셔너리에 저장하는 파이썬 코드입니다.
2024. 10. 10 최초작성
테스트 결과를 쉽게 확인할 수 있도록 서브 디렉토리에 있는 이미지 개수를 줄여놓고 테스트했습니다. 이미지 파일 외에 _DS_Store 같은 다른 파일이 포함되어도 처리할 수 있도록 코드가 작성되어 있습니다.
전체 코드입니다.
import os # 디렉토리 지정 dataset_path = 'train' # 서브 디렉토리 이름 얻기 entries = os.listdir(dataset_path) subdirs = [entry for entry in entries if os.path.isdir(os.path.join(dataset_path, entry))] # 서브 디렉토리 별로 서브 디렉토리 이름을 key로하여 딕셔널리에 이미지 파일 리스트 저장하기 list_files = {} for subdir in subdirs: files = [ dataset_path + '/' + subdir + '/' + filename for filename in os.listdir(dataset_path + '/' + subdir) if filename.lower().endswith('.jpg')] print(f'number of files in {dataset_path + '/' + subdir} : ', len(files)) list_files[subdir] = files print(list_files) |
실행하면 서브 디렉토리 이름을 key로하여 딕셔너리에 저장된 이미지 파일 리스트를 출력합니다.
number of files in train/dogs : 10
number of files in train/cats : 10
{'dogs': ['train/dogs/dog.1.jpg', 'train/dogs/dog.2.jpg', 'train/dogs/dog.3.jpg', 'train/dogs/dog.7.jpg', 'train/dogs/dog.6.jpg', 'train/dogs/dog.4.jpg', 'train/dogs/dog.5.jpg', 'train/dogs/dog.8.jpg', 'train/dogs/dog.9.jpg', 'train/dogs/dog.10.jpg'], 'cats': ['train/cats/cat.6.jpg', 'train/cats/cat.7.jpg', 'train/cats/cat.5.jpg', 'train/cats/cat.4.jpg', 'train/cats/cat.1.jpg', 'train/cats/cat.3.jpg', 'train/cats/cat.2.jpg', 'train/cats/cat.10.jpg', 'train/cats/cat.9.jpg', 'train/cats/cat.8.jpg']}