파이썬(Python)/tkinter

[Python]tkinter로 파일 업로드 윈도우 만들기(File upload, window, download) #2

끄적끄적아무거나 2021. 12. 16. 08:47
반응형

 

목차

     

     

     

     

     

    tkinter 경로(Path) 정보 가져 오기, 파일 복사하기

     

    앞서 포스트에서 파일(File) 업로드를 위한 윈도우 창을 디자인 하였습니다.

    https://scribblinganything.tistory.com/417

     

    [Python]tkinter로 파일 업로드 윈도우 만들기(File upload, window, download) #1

    목차 [Python]tkinter로 파일 업로드 윈도우 만들기#1 - 진행 방법 이번 장에는 파일 업로드를 위한 window 창(팝업창)을 디자인 합니다. (Design) 다음 포스트에서 디자인된 창을 통해 함수를 적용해서 파

    scribblinganything.tistory.com

    이번 장에서는 디자인을 이용해서 파일을 불러오고 불러온 파일의 경로를 저장하고 다른 폴더에 해당 파일을 복사하는 방법에 대해 알아보겠습니다.

     

    함수 코드>>

    excel_ext = r"*.xlsx *.xls *.csv"
    
    def file_find():
        file = filedialog.askopenfilenames(filetypes=(("Excel file", excel_ext), ("all file", "*.*")), initialdir=r"C:\Users")
        en_filepath.delete(0,END)
        en_filepath.insert(END, file[0])
            
    def file_upload():
        if len(en_filepath.get()) == 0:
            mbox.showinfo("warning","select file, please")
            return
        else:
            file_name = os.path.basename(en_filepath.get())
            dest_path = os.path.join("D:\\", file_name)
            shutil.copy(en_filepath.get(),dest_path)
            en_filepath.delete(0,END)    
            return

     

    1번 라인 : 엑셀(excel) 파일을 불러 올 것인데 읽을 확장자명에 대한 정의를 합니다.

    3~6번 라인 : 엑셀(excel) 파일을 찾는 함수 입니다.

    4번 라인 : askopenfilenames 함수를 사용해서 파일을 검색하는 함수를 실행합니다. 

    5~6번 라인 : 앞서 디자인한 파일 입력창에 불러온 파일을 입력합니다.

     

    8~17번 라인 : 불러온(Load) 파일을 D드라이브에 복사합니다.

    9번 라인 : 입력창에 파일경로와 파일명이 있는지 확인 합니다.

    10번 라인 : 메세지창을 이용해 경고 해줍니다.

    13번 라인 : os.path.basename을 사용해서 경로는 삭제하고 파일명만 추출합니다.

    14번 라인 : 옮기고자 하는 경로에 파일명을 추가 합니다.

    15번 라인 : shutil 라이브러리를 사용해서 파일을 복사해 줍니다.

     

    반응형

     

     

     

     

    tkinter로 파일 업로드 윈도우 만들기: 전체 코드

     

    이번에는 앞서 만든 디자인과 함수를 합쳐서 결과를 확인해보겠습니다.

     

     

    전체 코드>>

    from tkinter import *
    from tkinter import filedialog
    import tkinter.messagebox as mbox
    import os
    import shutil
    
    excel_ext = r"*.xlsx *.xls *.csv"
    
    def file_find():
        file = filedialog.askopenfilenames(filetypes=(("Excel file", excel_ext), ("all file", "*.*")), initialdir=r"C:\Users")
        en_filepath.delete(0,END)
        en_filepath.insert(END, file[0])
            
    def file_upload():
        if len(en_filepath.get()) == 0:
            mbox.showinfo("warning","select file, please")
            return
        else:
            file_name = os.path.basename(en_filepath.get())
            dest_path = os.path.join("D:\\", file_name)
            shutil.copy(en_filepath.get(),dest_path)
            en_filepath.delete(0,END)    
            return
    
    app = Tk()
    en_filepath = Entry(app, width=100)
    en_filepath.pack(fill="x", padx=1, pady=1)
    
    fr_bt = Frame(app)
    fr_bt.pack(fill="x", padx=1, pady=1)
    
    bt_upload = Button(fr_bt, text="Upload", width=10, command= file_upload)
    bt_upload.pack(side="right", padx=1, pady=1)
    bt_find = Button(fr_bt, text="Find", width=10, command= file_find)
    bt_find.pack(side="right", padx=1, pady=1)
    
    app.title('scribblinganything.tistory.com')
    app.mainloop()

     

     

     

    결과>>

    아래 그림은 실행 후 파일을 로드하고 파일 복사가 완료된 화면입니다.

     

     

     

     

    반응형