Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Tkinter의 askopenfile() 함수로 파일 열기 구현하기

파이썬 프로그램에서 사용할 파일 경로를 코드에 직접 하드코딩하는 대신, GUI를 통해 사용자가 운영체제의 폴더 구조를 탐색하면서 원하는 파일을 직접 선택하도록 만들 수 있습니다. 이는 파이썬의 tkinter 모듈을 활용하여 구현하며, 캔버스(윈도우)를 정의하고 그 위에 파일을 탐색할 수 있는 버튼을 배치하는 방식으로 진행됩니다.

askopenfile() 함수란?

tkinter.filedialog 모듈의 askopenfile() 함수는 파일 선택 대화상자를 띄우고, 사용자가 선택한 파일 객체를 반환합니다. 이 함수를 사용하면 파일 경로를 미리 지정하지 않아도 되므로 프로그램의 유연성과 사용자 편의성이 크게 향상됩니다.

아래 예제에서는 파일을 여는 함수를 하나 정의합니다. 여기서는 텍스트 파일만 다루는데, 그 이유는 파이썬이 텍스트 파일의 내용을 읽어 가독성 좋은 형태로 출력할 수 있기 때문입니다. .txt.csv처럼 텍스트 기반의 파일이라면 어떤 것이든 읽을 수 있습니다.

예제 코드

from tkinter import *
from tkinter import filedialog
base = Tk()
# 캔버스 생성
base.geometry('150x150')
# 파일을 여는 함수
def file_opener():
    input = filedialog.askopenfile(initialdir="/")
    print(input)
    for i in input:
        print(i)
# 버튼 라벨
x = Button(base, text ='Select a .txt/.csv file', command = lambda:file_opener())
x.pack()
mainloop()

실행 과정

위 코드를 실행하면 아래와 같은 파일 탐색 대화상자가 열립니다.

파이썬 Tkinter의 askopenfile() 함수로 파일 열기 구현하기

대화상자에서 원하는 파일을 선택합니다.

파이썬 Tkinter의 askopenfile() 함수로 파일 열기 구현하기

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

<_io.TextIOWrapper name='C:/Users/Pradeep/Documents/welcome.txt' mode='r' encoding='cp1252'>
Hello There !
Welcome to Tutorialspoint!

주요 포인트 정리

  • initialdir="/" 옵션은 대화상자가 열릴 때 시작 디렉터리를 지정합니다. 원하는 기본 경로로 변경할 수 있습니다.
  • askopenfile()은 반환값으로 TextIOWrapper 객체를 제공하므로, 별도의 open() 호출 없이 바로 파일 내용을 읽을 수 있습니다.
  • 사용자가 파일 선택을 취소하면 None이 반환되므로, 실제 프로젝트에서는 반드시 None 여부를 확인하는 예외 처리를 추가하는 것이 좋습니다.