파일 이름 일괄 변경 프로그램 만들기
페이지정보
글쓴이 관리자 조회 27,016 조회 날짜 20-01-29 22:24 / U:20-02-17 17:06내용
파일 이름 일괄 변경 프로그램 만들기
목록에서 파일을 불러서 이름을 일괄적으로 변경하는 프로그램을 만들어 보자.
1. 기능 명세
1) 파일 목록 불러오기 기능
2) 문자열 바꾸기 기능
3) 파일 이름 앞에 문자 추가하기
4) 파일 이름 뒤에 문자 추가하기
5) 이미지의 EXIF의 생성 시간으로 이름 변경
6) 변경된 이름 적용하기
7) 변경된 이름 취소
2. 목록에 표시될 정보
1) 현재 이름
2) 변경 이름
3) 파일 경로
4) 파일 크기
5) 변경 시각
3. 디자인 파일 만들기
1) 메인 화면
아래와 같은 모양으로 ui 파일을 만든다.
filename = filenamechange.ui
ObjectName
파일목록불러오기 = BTN_list
문자열바꾸기= BTN_replace
앞문자추가 = BTN_frontadd
뒷문자추가 = BTN_backadd
EXIF생성시각 = BTN_exif
변경적용 = BTN_excute
변경취소 = BTN_cancel
테이블 위젯 = TW_list
2) 문자열 바꾸기 폼
filename = filenamechange_replace.ui
ObjectName
이전 문자열 라인에디트 = LE_prev
이후 문자열 라인에디트= LE_new
확인 = BTN_confirm
취소 = BTN_cancel
3) 앞문자 추가 폼
filename = filenamechange_front.ui
ObjectName
문자열 라인에디트 = LE_str
확인 = BTN_confirm
취소 = BTN_cancel
4) 뒷문자 추가 폼
filename = filenamechange_back.ui
ObjectName
문자열 라인에디트 = LE_str
확인 = BTN_confirm
취소 = BTN_cancel
총 4개의 ui 파일을 만든다.
4. 코드 구현
추가되는 기능은 붉은색 굵은 글씨체로 코드를 추가하였으니, 추가된 붉은 글씨를 보면서 따라하면 이해하기 쉬울 것이다.
1) UI 화면 구성 및 Table Widget 칼럼 이름 설정
import sys
def setupUI(self):
# 메인 화면
# 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
|
실행화면
2) 파일 목록 불러오기 기능
파일 목록은 파일 다이얼로그를 이용하여 다수의 파일을 리스트로 읽어온다.
관련 기능은 https://www.jbmpa.com/pyside2/9에서 확인한다.
파일 다이얼로그에서 파일 목록을 선택하면, 선택된 파일들의 이름과 경로, 크기, 변경 시각등을 수집하여 테이블 위젯에 출력해준다.
import sys
def setupUI(self):
# 메인 화면
# 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
def setButtons(self):
# 파일 정보를 테이블 위젯에 삽입 for i in range(count): # 변경 시각 - 유닉스 타임으로 반환 # 유닉스 타임을 년월일시분초 형태로 변환 (1580628774 -> 2020-02-02 00:32:54) # 테이블 아이템 입력
|
3) 문자열 바꾸기 기능
문자열 바꾸기 버튼을 클릭하면 문자열 변경 창이 나타난다.
변경하고 싶은 문자열을 입력하고 확인 버튼을 누르면, 목록의 변경이름에서 문자열을 변경하여 다시 저장해준다.
import sys
def setupUI(self):
# 메인 화면 # 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
def setButtons(self):
# 문자열 바꾸기 버튼 클릭
# 문자열 바꾸기 버튼 클릭, 문자열 변경 창을 보여준다. UI_REPLACE.activateWindow() # 문자열 변경 창에서 취소 클릭, 문자열 변경 창을 사라지게 한다.
def NameReplace():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다. # 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다. UI_REPLACE.close()
# 파일 정보를 테이블 위젯에 삽입 for i in range(count): # 변경 시각 - 유닉스 타임으로 반환 # 유닉스 타임을 년월일시분초 형태로 변환 (1580628774 -> 2020-02-02 00:32:54)
# 테이블 아이템 입력
|
4) 앞 문자 추가하기 기능
앞문자 추가 버튼을 클릭하면 앞문자 추가 창이 나타난다.
파일 이름 앞에 추가하고 싶은 문자열을 입력하고 확인 버튼을 누르면, 목록의 변경이름에서 문자열을 변경하여 다시 저장해준다.
import sys
def setupUI(self):
# 메인 화면 # 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
def setButtons(self):
# 문자열 바꾸기 버튼 클릭
# 앞문자 추가
# 문자열 바꾸기 버튼 클릭, 문자열 변경 창을 보여준다. UI_REPLACE.activateWindow() # 문자열 변경 창에서 취소 클릭, 문자열 변경 창을 사라지게 한다.
UI_FRONT.activateWindow() # 앞문자 추가 창에서 취소 클릭, 앞문자 추가 창을 사라지게 한다.
def Frontadd():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다.
# 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다.
def NameReplace():
# 테이블 위젯의 row count 만큼 반복하며 변경 이름의 텍스트를 변경하여 다시 저장한다. # 변경이름에 다시 입력한다.
# 작업을 마치고 창을 닫는다. UI_REPLACE.close()
# 파일 정보를 테이블 위젯에 삽입 for i in range(count): # 변경 시각 - 유닉스 타임으로 반환 # 유닉스 타임을 년월일시분초 형태로 변환 (1580628774 -> 2020-02-02 00:32:54)
# 테이블 아이템 입력
|
5) 뒷 문자 추가하기 기능
뒷문자 추가 버튼을 클릭하면 뒷문자 추가 창이 나타난다.
파일 이름 뒤에 추가하고 싶은 문자열을 입력하고 확인 버튼을 누르면, 목록의 변경이름에서 문자열을 변경하여 다시 저장해준다.
import sys
def setupUI(self):
# 메인 화면 # 문자열 바꾸기 화면
# 테이블 위젯 컬럼 이름 설정 # 테이블 헤더 사이즈 늘리기 UI_MAIN.TW_list.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.setCentralWidget(UI_MAIN)
def setButtons(self):
# 문자열 바꾸기 버튼 클릭
# 앞문자 추가
# 뒷문자 추가
# 문자열 바꾸기 버튼 클릭, 문자열 변경 창을 보여준다. UI_REPLACE.activateWindow() # 문자열 변경 창에서 취소 클릭, 문자열 변경 창을 사라지게 한다.
UI_FRONT.activateWindow() # 앞문자 추가 창에서 취소 클릭, 앞문자 추가 창을 사라지게 한다.
# 뒷문자 추가 클릭, 뒷문자 추가 창을 보여준다. UI_BACK.activateWindow() # 뒷문자 추가 창에서 취소 클릭, 뒷문자 추가 창을 사라지게 한다. 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) # 테이블 아이템 입력
|
### 다음 강좌로 이어짐 ###
https://www.jbmpa.com/python_advanced/5
댓글목록
댓글이 없습니다