간단한 대화 상자로 Python에서 파일 선택


127

Python 콘솔 응용 프로그램에서 파일 경로를 입력으로 얻고 싶습니다.

현재 콘솔에서 입력으로 전체 경로 만 요청할 수 있습니다.

사용자가 전체 경로를 입력하는 대신 파일을 선택할 수있는 간단한 사용자 인터페이스를 트리거하는 방법이 있습니까?

답변:


212

tkinter를 사용하는 것은 어떻습니까?

from Tkinter import Tk
from tkinter.filedialog import askopenfilename

Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)

끝난!


TypeError : 'module'object is not callable on Tk (). withdraw ()-어떤 아이디어?
user391339

1
나는 root = Tk.Tk () 다음 root.withdraw ()를해야했다. 이제 파일 열기 대화 창이 닫히지 않습니다.
user391339

20
Python 3.x를 사용하면 "Tkinter"가 실제로 모두 소문자 인 "tkinter"라고 생각합니다.
WestAce

1
@WestAce 예, Python3의 경우 "Tkinter"에서 "tkinter"로 변경되었습니다
Ben

1
특정 유형의 파일 만 허용하는 방법이 있습니까? 예를 들어. 나는 이미지를 선택하는 사용자가 파일 만 원하는
샨 Shinde

85

완전성에 대한 Etaoin의 답변의 Python 3.x 버전 :

from tkinter.filedialog import askopenfilename
filename = askopenfilename()

7
전체 병렬 처리의 경우 import tkinter+ 도 있어야 tkinter.Tk().withdraw()합니다.
imallett

4
이것은 GUI 창이 열립니다 (Mac에서 파이썬 3.6.6)을 나를 위해 작동하지 않습니다하지만 당신은 닫지 그것은 당신이 GET 비치 볼 죽음의 수
벤 빈센트

1
여기도 마찬가지입니다. 파일 대화 상자가 닫히지 않습니다
Cabara 2010 년

1
이 코드는 수락 된 답변과 동일하지만 불완전합니다.
에릭

Mac 10.14.6에서 이것은 파일 찾기를 연 다음 전체 시스템을 충돌 시켰습니다 :(
gaya

29

부착 에는 EasyGUI (문서로 생성 하여 pydocepydoc 버전 0.96의 경우) :

import easygui
print(easygui.fileopenbox())

설치하기 위해서:

pip install easygui

데모:

import easygui
easygui.egdemo()

4
이것은 지금까지 최고의 솔루션입니다. 가장 큰 이유는에는 EasyGUI이 핍 패키지입니다 쉽게 설치할 수 있다는 것입니다
Yonatan Naor

2
Mac OSX 10.14.5, python 3.6.7, easygui 0.98.1에서 이것을 시도하면 끔찍한 충돌이 발생합니다. 권장하지 않습니다.
Christopher Barber

invalid syntax오류 가 발생 print easygui.diropenbox()합니까?
Bricktop


1
@ChristopherBarber는 10.14.6과 동일합니다. Python은 계속 종료됩니다.
gaya

11

Python 2에서는 tkFileDialog모듈을 사용합니다 .

import tkFileDialog

tkFileDialog.askopenfilename()

Python 3에서는 tkinter.filedialog모듈을 사용합니다 .

import tkinter.filedialog

tkinter.filedialog.askopenfilename()

파이썬 3에서 표준 설치의 일부가 아닌
miguelmorin

3

고려해야 할 또 다른 옵션은 Zenity입니다 : http://freecode.com/projects/zenity .

Python 서버 애플리케이션 (GUI 구성 요소 없음)을 개발 중이 어서 Python GUI 툴킷에 대한 종속성을 도입하고 싶지 않았지만 디버그 스크립트 중 일부를 입력 파일로 매개 변수화하고 싶었습니다. 사용자가 명령 줄에 파일을 지정하지 않은 경우 시각적으로 사용자에게 파일을 요청합니다. Zenity는 완벽하게 맞았습니다. 이를 위해 subprocess 모듈을 사용하여 "zenity --file-selection"을 호출하고 stdout을 캡처합니다. 물론이 솔루션은 Python에만 국한되지 않습니다.

Zenity는 여러 플랫폼을 지원하며 이미 개발 서버에 설치되어 원치 않는 종속성없이 디버깅 / 개발을 용이하게했습니다.


0

나중에 중복 질문에 대한이 답변에서 제안한 것처럼 tkinter보다 wxPython으로 훨씬 더 나은 결과를 얻었습니다.

https://stackoverflow.com/a/9319832

wxPython 버전은 xfce 데스크톱이있는 OpenSUSE Tumbleweed 설치의 다른 응용 프로그램에서 열린 파일 대화 상자와 동일한 파일 대화 상자를 생성 한 반면 tkinter는 익숙하지 않은 횡 스크롤 인터페이스로 비좁고 읽기 어려운 것을 생성했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.