TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 업무 자동화>

[파이썬] 폴더 내의 여러 파일의 파일명 한 번에 바꾸기

by 기록자_Recordian 2024. 9. 5.
728x90
반응형

수행 내용 및 목표

 

이전에 네이버에서 웹 스크래핑으로 이미지를 대량으로 다운 받아놓았는데,

 

[이미지 웹스크래핑] 웹스크래핑으로 네이버에서 이미지 다운 받기

수행 목적 및 내용 개인적으로 진행 중인 프로젝트가 있는데, 다양한 대량의 이미지를 수집하여 CNN을 통한 이미지 분석을 진행하려고 한다.CNN 딥러닝을 통한 이미지 분석 모델 구현 이전에, 학

puppy-foot-it.tistory.com

실수로, 폴더명만 다르게 해놓고, 폴더 내의 파일명은 모두 동일하게 다운로드 받아놓았다.

 

다른 폴더, 동일한 파일명

 

이미지 분류 모델 생성을 위해 모든 이미지 파일을 한 폴더 내로 넣으려다가, 이렇게 되면 모든 파일명이 똑같아서 대참사가 벌어지겠구나를 직감하고, 파일명을 무조건 바꿔야 하는 상황에 놓였다.

 

원래 파이썬을 몰랐다면, 수작업으로 일일이 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)

 

[코드 설명]

  1. 함수 정의:
    • rename_files_in_folder: 접두사 및/또는 접미사를 추가하여 파일 이름을 변경하는 함수.
  2. 매개변수:
    • folder_path: 파일이 있는 폴더의 경로.
    • prefix: 각 파일 이름 앞에 추가할 문자열.
    • suffix: 각 파일 이름 뒤에 추가할 문자열.
    • extension: 지정된 확장자를 가진 파일만 이름을 변경. None으로 설정하면 모든 파일을 변경.
  3. 파일 순회:
    • 지정된 폴더에 있는 각 파일을 순회하며, 디렉토리는 건너뛴다.
    • 확장자가 지정된 경우 해당 확장자와 일치하는 파일만 이름을 변경한다.
    • 새로운 파일 이름을 생성한 후, os.rename() 함수를 사용하여 파일 이름을 변경한다.
    • 변경된 파일 이름을 출력하여 확인할 수 있다.

커스터마이징:

  • 접두사/접미사: prefix와 suffix 변수를 수정하여 파일 이름에 추가할 문자열을 변경할 수 있다.
  • 파일 확장자: 특정 확장자의 파일만 이름을 변경하려면 extension 변수를 설정하고, 모든 파일을 변경하려면 None으로 설정.

이 코드는 폴더 내 파일 이름을 효율적으로 변경하며, 필요에 따라 다양한 이름 변경 규칙으로 쉽게 수정할 수 있다.


변경 완료

 

'Tire tread' 폴더 내의 모든 이미지 파일에 접두사 'tire_' 를 붙이게 하는 코드를 실행하였고, 10초도 안 걸리는 짧은 시간에 모든 파일명이 변경되었다.

뜬금없이 god 쭌 아저씨는 왜...?

 

나머지 폴더 내의 파일들도 일부 코드를 수정하며 진행한 뒤, 한 폴더에 합쳐 이미지 분류 모델을 생성하면 될 듯 하다.

728x90
반응형