스캔한 파일 이름 일괄변경

ynoolee·2022년 3월 22일
0

Python

목록 보기
2/2

급하게 사용했던 코드
예외처리 하나 없고 거의다 하드코딩으로 하였음

이미지 (숫자).tif
파일을

47.tif ,48.tif ,49.tif ,50.tif.... 이렇게 변경하고자 하였음

import os
import re # regex 를 위함
import functools
dir = 'C:\\Users\\owner\\Documents\\Scanned Documents\\뒷'

def bring_all_file(file_path):
    all_files = os.listdir(file_path)
    all_files = sorted(all_files, key = functools.cmp_to_key(my_comparator))
    # 정렬 확인
    for f in all_files:
        print(f)
        extract_digit(f)
    return all_files

# 이름 변경
def rename_files(files,dir):
    start = 47 # 47 번부터 시작
    for f in files:
        f_name = str(start) +".tif"
        f_path = os.path.join(dir,f)
        new_path = os.path.join(dir, f_name)
        start += 1
        os.rename(f_path, new_path)


# 현재 파일 명 형태 -> 이미지 (숫자).tif
# 리스트 내의 문자열들을 이 "숫자" 를 기준으로 정렬하고자 한다
# 1. regex 를 사용하여 숫자 부분만 추출 -> 2. 문자열을 숫자로 변형 -> 3.두 숫자에 대한 연산 결과를 리턴
def extract_digit(str):
    regex = re.compile("\d+")
    number = regex.search(str).group()
    return int(number)


# 'str' 타입의 인자들을 받아와 regex 를 사용하여 문자열 출력
def my_comparator(x,y):
    return extract_digit(x) - extract_digit(y)


files = bring_all_file(dir)
rename_files(files, dir)

0개의 댓글