급하게 사용했던 코드
예외처리 하나 없고 거의다 하드코딩으로 하였음
이미지 (숫자).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)