Pythonで読み込むファイルを入力・選択する方法
データファイルや画像ファイルなど,Python 上で処理したいファイルを入力・選択する方法はいくつかあります.
環境
- MacBook Air (13-inch, 2017)
- macOS Catalina (10.15.3)
- Python 3.7.6
標準入力を使う
最もオーソドックスなのは,標準入力でファイル名をキーボードで打ち込む方法です.
file_name = input('Input a file name: ')
一番簡単ですが,ファイル名をいちいち覚えておかないといけないので,ちょっとめんどくさいです.
ターミナル上で選択できるようにする
Caution
macOS High Sierra (10.13) では動いていましたが,macOS Catalina (10.15) にしたら動かなくなりました.
パッケージをインストールしたりプロジェクトを作成したりするとき,初期設定をターミナル上で選択するのと同じような機能を実装できます.
ファイルの選択肢を表示し,矢印キーと Enter でどのファイルを選択するかを決めることができます.
Caution
個人開発のパッケージっぽいです.
terminal
$ pip install pick
import os
from pick import pick
dir = './data'
file_name, index = pick(sorted(os.listdir(dir)), 'Select a data file')
data
ディレクトリ下にあるファイルが候補として表示されます.
GUI で選択する
Windows であればエクスプローラ,macOS であれば Finder を使用して選択します.
from tkinter import filedialog
type = (('テキストファイル','*.txt'))
dir = './data'
file_name = filedialog.askopenfilename(filetypes=type, initialdir=dir)
type
で読み込むファイルの形式を指定することができます.
形式に関わらずすべて表示する場合は ('', '_._')
と指定します.
(追記)
Tk という名のウィンドウが自動生成されますが,上記の方法だとウィンドウを表示したままになるので,それを避けたい場合は下のように書くこともできます.
from tkinter import filedialog
from tkinter import *
type = (('テキストファイル','*.txt'))
dir = './data'
root = Tk()
# hide window
root.withdraw()
root.filename = filedialog.askopenfilename(filetypes=type, initialdir=dir)