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

作成日

2020年3月12日

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

環境

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

標準入力を使う

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

sample.py
file_name = input('Input a file name: ')

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

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

::caution macOS High Sierra (10.13) では動いていましたが,macOS Catalina (10.15) にしたら動かなくなりました. ::

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

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

::caution 個人開発のパッケージっぽいです. ::

terminal
$ pip install pick
sample.py
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 を使用して選択します.

sample.py
from tkinter import filedialog

type = (('テキストファイル','*.txt'))
dir = './data'
file_name = filedialog.askopenfilename(filetypes=type, initialdir=dir)

type で読み込むファイルの形式を指定することができます.

形式に関わらずすべて表示する場合は ('', '_._') と指定します.

(追記)

Tk という名のウィンドウが自動生成されますが,上記の方法だとウィンドウを表示したままになるので,それを避けたい場合は下のように書くこともできます.

sample.py
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)

mktia's note

Research & Engineering / Blockchain / Web Dev

© 2017-2025 mktia. All rights reserved.