728x90
반응형
전이 학습을 위해 이미지를 폴더로 분류해야 하는데,
학습을 할 이미지가 있는 폴더에는 각 클래스의 이름을 딴 하위 폴더(예: 'tire' 및 'non_tire')가 포함되어야 하며 이러한 하위 폴더에는 이미지 파일이 포함되어야 한다.
따라서, 하단의 이미지 처럼 되어 있는 폴더를 파일명에 있는 클래스 ('tire' / 'non_tire') 에 따라 새로운 폴더를 만들어 이동을 시켜줘야 한다.
[해당 코드]
import os
import shutil
# Define the source directory and destination folders
source_directory = r'C:\Users\niceq\Desktop\Startup-related\Tire Scanner\Tire images\Classified Images'
tire_directory = os.path.join(source_directory, 'tire')
non_tire_directory = os.path.join(source_directory, 'non_tire')
# Create destination folders if they don't exist
os.makedirs(tire_directory, exist_ok=True)
os.makedirs(non_tire_directory, exist_ok=True)
# List all files in the source directory
for filename in os.listdir(source_directory):
# Construct old file path
old_file_path = os.path.join(source_directory, filename)
# Skip directories
if os.path.isdir(old_file_path):
continue
# Determine new folder based on filename
if '_tire' in filename:
new_file_path = os.path.join(tire_directory, filename)
elif '_non_tire' in filename:
new_file_path = os.path.join(non_tire_directory, filename)
else:
# Skip files that don't match any criteria
continue
# Move the file
shutil.move(old_file_path, new_file_path)
print(f"Moved: {old_file_path} -> {new_file_path}")
print("File moving completed.")
<코드 설명>
- 디렉터리 정의: 'tire' 및 'non_tire' 대상 폴더의 소스 디렉터리와 경로를 지정.
- 대상 폴더 생성: 대상 폴더가 아직 존재하지 않는 경우 os.makedirs를 사용하여 대상 폴더를 생성. exist_ok=True 매개변수는 폴더가 이미 존재하는 경우 오류를 방지.
- 파일 목록: 소스 디렉터리의 모든 파일을 나열.
- 파일 확인 및 이동: 각 파일에 대해 파일 이름을 기준으로 tire 또는 non_tire 폴더로 이동해야 하는지 결정. shutil.move를 사용하여 파일을 적절한 폴더로 이동.
- 디렉터리 건너뛰기: 디렉터리를 건너뛰고 파일만 이동했는지 확인.
<실행 결과>
'Classified Images' 폴더 내의 이미지들이 파일 명에 따라 분류되었다.
728x90
반응형
'[파이썬 Projects] > <파이썬 업무 자동화>' 카테고리의 다른 글
[파이썬] 대량의 폴더 생성하기 (1) | 2024.09.07 |
---|---|
[파이썬] 파일명 변경하기 ver.3 (0) | 2024.09.07 |
[파이썬] 파일명 변경하기 ver.2 (2) | 2024.09.06 |
[이미지 웹스크래핑] 픽사베이 API Key 발급을 통한 이미지 수집 (1) | 2024.09.05 |
[파이썬] 폴더 내의 여러 파일의 파일명 한 번에 바꾸기 (1) | 2024.09.05 |