프로그램 파일

폴더백업.zip
8.66MB

 

 

폴더의 하위경로 백업 프로그램

 

 

 

파이썬 소스코드


import tkinter
import tkinter.font
from tkinter import *
from tkinter import filedialog
import os
from distutils.dir_util import copy_tree
import threading
import time
import sys

#백업폴더 선택
def start_bnt_click():
    dir_path = filedialog.askdirectory(parent=window,initialdir="\\",title='폴더를 선택하세요')
    print(dir_path)
    start_path.config(text=dir_path)

#백업될 폴더 선택
def end_btn_click():
    dir_path = filedialog.askdirectory(parent=window,initialdir="\\",title='폴더를 선택하세요')
    print(dir_path)
    end_path.config(text=dir_path)

#시작버튼이 클릭되면
def btn_go_click():
    threading.Thread(target=copy_thread).start() #copy_thread실행 시간이 오래소요되면 응답없음으로 나옴 쓰레드로 실행해야함

#복사동작하는 쓰레드
def copy_thread():
    #config.txt 설정파일에서 읽어 경로 설정
    file_path = 'config.txt'
    with open(file_path, 'w', encoding='UTF8') as f : 
        f.write(start_path.cget("text") + ',')
        f.write(end_path.cget("text"))
    
    lb_state.config(text="복사중...")
    copy_tree(start_path.cget("text"), end_path.cget("text"),update=1,) #폴더백업
    lb_state.config(text="복사완료...")
    time.sleep(5.0)
    lb_state.config(text="실행버튼을 눌러 복사하세요")

#tkinter 윈도우설정
window=tkinter.Tk()
window.title("파일백업")
window.geometry("380x100+800+300")
window.resizable(False, False)

#백업폴더 경로 및 버튼 생성
start_path = Label(window,width=40,anchor="se")
start_path.grid(row=0, column=0)
btn_start = tkinter.Button(window, overrelief="solid",text="백업폴더", width=10, command=start_bnt_click, repeatdelay=1000, repeatinterval=100)
btn_start.grid(row=0, column=1)

#백업될폴더 경로 및 버튼 생성
end_path = Label(window,width=40,anchor="se")
end_path.grid(row=1, column=0)
btn_end = tkinter.Button(window, overrelief="solid",text="백업될폴더", width=10, command=end_btn_click, repeatdelay=1000, repeatinterval=100)
btn_end.grid(row=1, column=1)

#실행버튼 생성
btn_go = tkinter.Button(window, overrelief="solid",text="실행", width=10, command=btn_go_click, repeatdelay=1000, repeatinterval=100)
btn_go.grid(row=3, column=0)

#마지막줄에 상태를 표시하는 라벨 생성
lb_state = Label(window,width=40,text="실행버튼을 눌러 복사하세요")
lb_state.grid(row=4, column=0)

#.py 파일이 실행되는 디렉토리로 이동
#os.chdir(os.path.dirname(os.path.abspath(__file__)))  #.py로 실행시 파일경로
os.chdir(os.path.dirname(os.path.abspath(sys.executable))) #.exe로 실행파일 생성시 경로
print(os.getcwd())

#config.txt 설정 파일이 있으면 읽어옴
try:
    file_path = 'config.txt'
    with open(file_path, 'r', encoding='UTF8') as f : 
        read_file = f.read()
    start_path.config(text=read_file.split(',')[0])
    end_path.config(text=read_file.split(',')[1])
except:
    pass

window.mainloop()

 

+ Recent posts