수행 내용 및 목표
이전에 네이버에서 웹 스크래핑으로 이미지를 대량으로 다운 받아놓았는데,
실수로, 폴더명만 다르게 해놓고, 폴더 내의 파일명은 모두 동일하게 다운로드 받아놓았다.
이미지 분류 모델 생성을 위해 모든 이미지 파일을 한 폴더 내로 넣으려다가, 이렇게 되면 모든 파일명이 똑같아서 대참사가 벌어지겠구나를 직감하고, 파일명을 무조건 바꿔야 하는 상황에 놓였다.
원래 파이썬을 몰랐다면, 수작업으로 일일이 F2 노가다를 할 생각에 걱정됐지만, 이 역시 비교적 간단한 코드로 변경이 가능하다는 거...
폴더 별로 파일명에 접두사를 붙여 파일명을 변경하여 서로 중복되지 않게 하려고 한다.
폴더 내 파일명 일괄 변경 코드
지정된 폴더에 있는 파일들을 대량으로 이름을 변경할 수 있는 파이썬 코드를 아래에 작성했다. 이 코드는 os 모듈을 사용하여 파일 이름을 자동으로 변경한다. 파일에 접두사나 접미사를 추가하여 이름을 바꾸는 방식으로 동작하며, 필요에 따라 이름 변경 규칙을 수정할 수 있다.
# 폴더 내에 있는 파일명 일괄적으로 바꾸기
import os
def rename_files_in_folder(folder_path, prefix='', suffix='', extension=None):
"""
지정된 폴더에 있는 모든 파일의 이름을 접두사 및/또는 접미사를 추가하여 변경합니다.
매개변수:
- folder_path: 파일이 있는 폴더 경로
- prefix: 각 파일 이름 앞에 추가할 문자열
- suffix: 각 파일 이름 뒤에 추가할 문자열
- extension: 지정된 경우, 해당 확장자를 가진 파일만 이름을 변경
"""
# 폴더가 존재하는지 확인
if not os.path.isdir(folder_path):
print(f"폴더 '{folder_path}'가 존재하지 않습니다.")
return
# 디렉토리 내 파일들을 순회
for filename in os.listdir(folder_path):
# 파일의 전체 경로 생성
file_path = os.path.join(folder_path, filename)
# 디렉토리는 건너뜀
if os.path.isdir(file_path):
continue
# 파일 확장자가 일치하는지 확인 (지정된 경우)
if extension and not filename.lower().endswith(extension.lower()):
continue
# 파일 이름과 확장자 분리
name, ext = os.path.splitext(filename)
# 새로운 파일 이름 생성
new_name = f"{prefix}{name}{suffix}{ext}"
new_file_path = os.path.join(folder_path, new_name)
# 파일 이름 변경
os.rename(file_path, new_file_path)
print(f"이름 변경: {filename} -> {new_name}")
# 예시 사용법
folder_path = r"C:\Users\pc02\Documents\Python Prac\Tire Scanner\images_naver\Tire tread" # 파일이 있는 폴더 경로로 변경
prefix = "tire_" # 파일 이름에 추가할 접두사
# suffix = "_v1" # 파일 이름에 추가할 접미사
extension = ".jpg" # 해당 확장자의 파일만 이름을 변경, 모든 파일을 변경하려면 None으로 설정
# rename_files_in_folder(folder_path, prefix, suffix, extension)
rename_files_in_folder(folder_path, prefix, extension)
[코드 설명]
- 함수 정의:
- rename_files_in_folder: 접두사 및/또는 접미사를 추가하여 파일 이름을 변경하는 함수.
- 매개변수:
- folder_path: 파일이 있는 폴더의 경로.
- prefix: 각 파일 이름 앞에 추가할 문자열.
- suffix: 각 파일 이름 뒤에 추가할 문자열.
- extension: 지정된 확장자를 가진 파일만 이름을 변경. None으로 설정하면 모든 파일을 변경.
- 파일 순회:
- 지정된 폴더에 있는 각 파일을 순회하며, 디렉토리는 건너뛴다.
- 확장자가 지정된 경우 해당 확장자와 일치하는 파일만 이름을 변경한다.
- 새로운 파일 이름을 생성한 후, os.rename() 함수를 사용하여 파일 이름을 변경한다.
- 변경된 파일 이름을 출력하여 확인할 수 있다.
커스터마이징:
- 접두사/접미사: prefix와 suffix 변수를 수정하여 파일 이름에 추가할 문자열을 변경할 수 있다.
- 파일 확장자: 특정 확장자의 파일만 이름을 변경하려면 extension 변수를 설정하고, 모든 파일을 변경하려면 None으로 설정.
이 코드는 폴더 내 파일 이름을 효율적으로 변경하며, 필요에 따라 다양한 이름 변경 규칙으로 쉽게 수정할 수 있다.
변경 완료
'Tire tread' 폴더 내의 모든 이미지 파일에 접두사 'tire_' 를 붙이게 하는 코드를 실행하였고, 10초도 안 걸리는 짧은 시간에 모든 파일명이 변경되었다.
나머지 폴더 내의 파일들도 일부 코드를 수정하며 진행한 뒤, 한 폴더에 합쳐 이미지 분류 모델을 생성하면 될 듯 하다.
'[파이썬 Projects] > <파이썬 업무 자동화>' 카테고리의 다른 글
[파이썬] 폴더 내의 파일 분류시키기 (0) | 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 |