-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrenamer.py
76 lines (63 loc) · 2.53 KB
/
renamer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""
캡차 이미지 다운로드 후, 학습 데이터를 생성할 때 라벨링을 편하게 하기 위한 도구
"""
from tkinter import Tk, ttk, StringVar, Label
import PIL.ImageTk
import PIL.Image
import sys
import os
# 캡차 이미지 보여주는 GUI 창
def showCaptcha(captcha_file):
root = Tk()
root.resizable(width=False, height=False)
root.title("Captcha image file renamer")
def clicked(keypress_event=None):
root.destroy()
w = 500 # Tk 창 너비
h = 200 # Tk 창 높이
ws = root.winfo_screenwidth() # 화면 너비
hs = root.winfo_screenheight() # 화면 높이
x = int((ws/2)-(w/2))
y = int((hs/2)-(h/2))
# Tk 창이 화면 중앙에 위치하도록 좌표 설정
root.geometry(f"{w}x{h}+{x}+{y}")
# 캡차 파일명 레이블
label = ttk.Label(root, text=f"{captcha_file.split('//')[-1]}")
label.pack(side="top")
# 자동입력 방지 문자 이미지 할당
img = PIL.ImageTk.PhotoImage(PIL.Image.open(captcha_file).resize((280, 70)))
panel = Label(root, image=img)
panel.pack(side="top")
# 입력 버튼
action = ttk.Button(root, text="확인", command=clicked)
action.pack(side="bottom")
# 입력 창
captcha = StringVar()
textbox = ttk.Entry(root, width=20, textvariable=captcha, justify="center", font="Helvetica 44 bold")
textbox.pack(side="bottom")
textbox.bind("<Return>", clicked)
textbox.focus_set()
# Tk 창 포커싱
root.focus_force()
# Tk 창 활성화
root.mainloop()
return captcha.get()
# 라벨링 할 파일들이 들어있는 폴더의 경로 설정
target_dir_path = "./testimage"
# target_dir_path 안의 모든 파일들을 순회하며 GUI 창을 띄우고, 새 이름을 입력받고 파일명 변경
for (root, directories, files) in os.walk(target_dir_path):
for file in files:
file_path = os.path.join(root, file)
while (True):
new_filename = showCaptcha(file_path)
# exit 입력하면 프로그램 종료
if (new_filename.lower() == "exit"):
sys.exit(0)
if (len(new_filename) == 4):
prev_filename = new_filename
break
# 실수로 잘못 입력한 경우 다음에 나오는 창에 "11111" 을 입력하면 잘못 입력한 파일명을 출력
if (new_filename.startswith("11111")):
print(prev_filename)
# 파일명 변경
os.rename(file_path, f"{target_dir_path}//{new_filename.upper()}.png")