- 파일 이름 일괄 변경 프로그램 만들기 2
페이지정보
내용
6) EXIF 생성 시각으로 파일 이름 변경하기
EXIF 정보가 있는 image 파일일 경우, EXIF의 생성 시각을 YMD_HIS 형식으로 파일 이름으로 저장한다.
Pillow 모듈을 설치한다.
pip install pillow
import sys from PIL import Image
def setupUI(self):
# 메인 화면 # 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
def setButtons(self):
# 문자열 바꾸기 버튼 클릭
# 앞문자 추가
# 뒷문자 추가
# 이미지의 EXIF 생성 시각으로 변경
# 문자열 바꾸기 버튼 클릭, 문자열 변경 창을 보여준다. UI_REPLACE.activateWindow() # 문자열 변경 창에서 취소 클릭, 문자열 변경 창을 사라지게 한다.
UI_FRONT.activateWindow() # 앞문자 추가 창에서 취소 클릭, 앞문자 추가 창을 사라지게 한다.
# 뒷문자 추가 클릭, 뒷문자 추가 창을 보여준다. UI_BACK.activateWindow() # 뒷문자 추가 창에서 취소 클릭, 뒷문자 추가 창을 사라지게 한다. def ExifExcute():
try:
if info != None:
for tag, value in info.items():
# 변경이름에 다시 입력한다. else:
def Backadd():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다.
# 파일 이름과 확장자를 구분한다.
# 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다.
def Frontadd():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다.
# 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다.
def NameReplace():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다. # 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다. UI_REPLACE.close()
# 파일 정보를 테이블 위젯에 삽입 for i in range(count): # 변경 시각 - 유닉스 타임으로 반환 # 유닉스 타임을 년월일시분초 형태로 변환 (1580628774 -> 2020-02-02 00:32:54) # 테이블 아이템 입력
|
7) 변경 적용 과 변경 취소
변경 적용 버튼을 누르면 현재 파일의 이름을 변경 이름으로 모두 변경 한다.
변경 취소 버튼을 누르면 변경 이름을 모두 현재 이름으로 리셋한다.
import sys from PIL import Image
def setupUI(self):
# 메인 화면 # 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
def setButtons(self):
# 문자열 바꾸기 버튼 클릭
# 앞문자 추가
# 뒷문자 추가
# 이미지의 EXIF 생성 시각으로 변경
# 변경 적용 버튼 눌렀을 때
# 변경 취소 버튼 눌렀을 때
# 문자열 바꾸기 버튼 클릭, 문자열 변경 창을 보여준다. UI_REPLACE.activateWindow() # 문자열 변경 창에서 취소 클릭, 문자열 변경 창을 사라지게 한다.
UI_FRONT.activateWindow() # 앞문자 추가 창에서 취소 클릭, 앞문자 추가 창을 사라지게 한다.
# 뒷문자 추가 클릭, 뒷문자 추가 창을 보여준다. UI_BACK.activateWindow() # 뒷문자 추가 창에서 취소 클릭, 뒷문자 추가 창을 사라지게 한다. def RenameReset():
def RenameExcute():
# 현재 이름과 변경할 이름이 다르면 이름을 변경한다.
def ExifExcute():
try:
if info != None:
for tag, value in info.items():
# 변경이름에 다시 입력한다. else:
def Backadd():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다.
# 파일 이름과 확장자를 구분한다.
# 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다.
def Frontadd():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다.
# 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다.
def NameReplace():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다. # 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다. UI_REPLACE.close()
# 파일 정보를 테이블 위젯에 삽입 for i in range(count): # 유닉스 타임을 년월일시분초 형태로 변환 (1580628774 -> 2020-02-02 00:32:54) # 테이블 아이템 입력
|
실행 결과
###############
기능 추가하기
1. 파일 목록 지우기
2. 파일 목록 불러올 때, 기존 목록에 이어서 붙이기
3. 2번 실행 시, 같은 파일은 중복되지 않게 하기
(테이블 위젯을 순서대로 파일경로/파일 이름을 조합하여, 새로불러오는 파일 목록과 비교 후, 중복되는 것을 새로운 파일 목록에서 제거한 후 2번에서 구현한 것과 같이 이어붙이기하면 됨)
4. 대문자, 소문자 변환하기
5. 유닉스 타임으로 된 이름을 년월일시분초 형식으로 변환하기
(1580628774679 -> 2020-02-02 00:32:54)
참고자료 : https://www.jbmpa.com/python_tip/9
등 새로운 기능들을 추가해 본다.