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파일을 선택하였고 아래와 같이 경로를 받아오는 것을 볼 수 있습니다.
댓글