Pythonで読み込むファイルを入力・選択する方法

データファイルや画像ファイルなど、Python 上で処理したいファイルを入力・選択する方法はいくつかあります。

環境

  • MacBook Air (13-inch, 2017)
  • macOS Catalina (10.15.3)
  • Python 3.7.6

標準入力を使う

最もオーソドックスなのは、標準入力でファイル名をキーボードで打ち込む方法です。

file_name = input('Input a file name: ')

一番簡単ですが、ファイル名をいちいち覚えておかないといけないので、ちょっとめんどくさいです。

ターミナル上で選択できるようにする

macOS High Sierra (10.13) では動いていましたが、macOS Catalina (10.15) にしたら動かなくなりました。

パッケージをインストールしたりプロジェクトを作成したりするとき、初期設定をターミナル上で選択するのと同じような機能を実装できます。

ファイルの選択肢を表示し、矢印キーと Enter でどのファイルを選択するかを決めることができます。

※個人開発のパッケージっぽいです。

$ 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)
タイトルとURLをコピーしました