본문 바로가기
Python/자동화도구

python - 파일 선택하여 파일 경로 및 파일 명칭 가져오기(tkinter, filedialog, askopenfilenames)

by 하나다음은둘 2023. 2. 15.

tkinter filedialog를 사용하여 file명칭 및 경로를 return값으로 반환하는 코드입니다.

class로 구현하여 언제든지 쓸 수 있도록 코딩하였습니다.

 

1) Class 설계(Openfile_OnenextTwo)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from tkinter import filedialog
import os
 
class Openfile_OnenextTwo:

    def __init__(self, nameSavedpath = "default_text.txt", fileExtension=r"*.*"):
        self.nameFile = nameSavedpath
        self.filePath = nameSavedpath
        self.fileExtension = fileExtension
 
    def findFilename(self):
        try:
            with open(self.filePath) as f:
                self.filePath = f.read()
                self.filePath = self.filePath[:self.filePath.rfind("/")]
        except FileNotFoundError as e:
            self.filePath='C:\\Users'
        file=filedialog.askopenfilenames(filetypes=(("all file",self.fileExtension),("all file","*.*")),initialdir=self.filePath)
 
        with open(self.nameFile,"wt"as f:
            s = str(file[0])
            f.write(s)
 
        return str(file[0])
cs

findFilenmae 함수를 설명하겠다.

 

1) file경로 설정

GUI로 사용시 파일경로를 재선택 했을 때 이전에 들어갔던 경로를 저장해주는 코드이다. 

Default코드는 C:\\Users 경로로 하였다.

(코드줄 12~17 - 이전 경로저장, 20~21 - 저장될 경로를 text에 저장)

1
2
3
4
5
6
try:
    with open(self.filePath) as f:
        self.filePath = f.read()
        self.filePath = self.filePath[:self.filePath.rfind("/")]
    except FileNotFoundError as e:
        self.filePath='C:\\Users'
cs
1
2
3
with open(self.nameFile,"wt"as f:
    s = str(file[0])
    f.write(s)
cs

 

2) tkinter filedialog 사용하여 파일 경로 반환

filedialog.askopenfilenames을 사용하면 파일을 선택 할 수 있다. 내부 파라미터는 2가지

1. filetypes

파라미터에 file확장자를 선택 할 수 있다. 근데 여기선 모든 확장자를 선택 할 수 있도록 코딩하였다. 원하는 type만 넣고싶으면 fileExtension만 filetypes에 넣어주시면 됩니다. 

2. initialdir 

어떤 경로에서 시작 할 것인가? 경로를 위에서 default or 이전에 열었던 경로를 사용 할 수 있습니다.

1
file=filedialog.askopenfilenames(filetypes=(("all file",self.fileExtension),("all file","*.*")),initialdir=self.filePath)
cs

 

3) 파일경로 및 파일명 반환

file명칭을 문자로 반환한다.

1
return str(file[0])
cs
 

2) 실제 사용

1) 라인 4 - OpenFileofFolder.py 파일에 위의 class를 정의했습니다. 

2) 라인 6 - 기존에 열었던 파일경로를 저장하기 위한 text 파일이름 설정

3) 라인 7 - 검색하고 싶은 확장자명칭

4) 라인 9 - class 선언

5) 라인 11 - class내 findFilename() 사용하여 saveDirectory변수에 저장

6) 라인 13 - 파일 directory + 파일명이 잘 나왔는지 saveDirectory변수에 저장된 경로를 print

1
2
3
4
5
6
7
8
9
10
11
12
13
import os
from tkinter import *
 
import OpenFileorFolder
 
saveFiledirectory = "my_save_extension.txt"
extensitonExcel = r"*.xlsx"
 
myFileopenclass = OpenFileorFolder.Openfile_OnenextTwo(saveFiledirectory,extensitonExcel)
 
saveDirectory = myFileopenclass.findFilename()
 
print("saveDirectory : ",saveDirectory)
cs

 

코드를 실행하면 파일을 선택 할 수 있고 저는 test.txt파일을 선택하였고 아래와 같이 경로를 받아오는 것을 볼 수 있습니다.

댓글