web-dev-qa-db-ja.com

単純なダイアログでPythonのファイルを選択する

Pythonコンソールアプリケーションの入力としてファイルパスを取得したいと思います。

現在、コンソールの入力としてフルパスのみを要求できます。

ユーザーがフルパスを入力する代わりにファイルを選択できるシンプルなユーザーインターフェイスをトリガーする方法はありますか?

109
Mustafa Zengin

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)

できた!

181
Etaoin

完全性に関するEtaoinの回答のPython 3.xバージョン:

from tkinter.filedialog import askopenfilename
filename = askopenfilename()
78
Stefano Palazzo

EasyGui (バージョン0.96の pydoc および epydoc によって生成されたドキュメント)の場合:

import easygui
print easygui.fileopenbox()

インストールするには:

pip install easygui

デモ:

import easygui
easygui.egdemo()
23
jfs

標準インストールの一部である tkFileDialog モジュールを使用します。

import tkFileDialog

print tkFileDialog.askopenfilename()
6
Gary Kerr

考慮すべきもう1つのオプションは、Zenityです。 http://freecode.com/projects/zenity

Pythonサーバーアプリケーション(GUIコンポーネントなし)を開発していたため、python GUIツールキットへの依存関係を導入したくありませんでしたが、デバッグスクリプトは入力ファイルによってパラメーター化され、コマンドラインでファイルを指定しなかった場合、ユーザーに視覚的にファイルを要求するようにしました。 Zenityはぴったりでした。これを実現するには、サブプロセスモジュールを使用して「zenity --file-selection」を呼び出し、stdoutをキャプチャします。もちろん、このソリューションはPython固有のものではありません。

Zenityは複数のプラットフォームをサポートしており、開発サーバーに既にインストールされているため、不要な依存関係を導入することなくデバッグ/開発を容易にしました。

3
kylejmcintyre