ファイル名ダイアログウィンドウとExcelファイルの読み込み
ファイル名入力ダイアログウィンドウ
ファイル名の入力をダイアログウィンドウで行う関数としてtkinter.filedialog.askopenfilenameがある。
次のスクリプトを実行すると
import tkinter
nm = tkinter.filedialog.askopenfilename()
print(nm)
図1のダイアログウィンドウが表示される。
図1
ファイル名を設定して「開く」ボタンをクリックすると、設定したファイル名(図1では「sample.py」)にフルパスが付いた形で文字列が返される。上のサンプルスクリプトのprintによる出力は
R:/samples/sample.py
となる。
図1で「開く」ボタンをクリックして図1のダイアログウィンドウを閉じても、図2のウィンドウが表示されて画面上に残っている。
図2
これを防ぐために、tkinterのTkオブジェクトをスクリプト中で生起して名前を付け、図1のダイアログウィンドウを閉じた後、このTkオブジェクトを消去する。例えば、
import tkinter
rt = tkinter.Tk()
rt.withdraw()
import tkinter.filedialog
nm = tkinter.filedialog.askopenfilename()
rt.destroy()
print(nm)
である。
出力ファイル名の入力はasksaveasfilenameを使えばよい。すなわち次のようにする。
import tkinter
rt = tkinter.Tk()
rt.withdraw()
import tkinter.filedialog
nm = tkinter.filedialog.asksaveasfilename()
rt.destroy()
print(nm)
このとき、表示されるダイアログウィンドウは図3に示すようなものである。図1と比べてボンタンが「保存」になっていることに注意。
図3
ファイル名を図3のように設定して「保存」ボタンをクリックすると、フルパスの付いたファイル名の文字列が返される。図3の設定の場合、上のスクリプトの出力は次のようになる。
R:/samples/output.txt
Excelファイルの読み込み
Excelファイルを読み込み、numpyの配列ndarrayの形式で表す方法を、以下の例によって説明する。Excelファイルの読み込みにpandasを用いているが、pandasはExcelファイルの読み込みにおいてモジュールxlrdを用いているので、これらのモジュールをインストールしておく必要がある。例えば、
pip install
pandas xlrd
である。importはpandasだけでよい。
Excelファイルとして図4のファイルdata.xlsxがあるとする。
図4
このファイルの名前を以下のスクリプトで読み込む。
import tkinter
import tkinter.filedialog
rt = tkinter.Tk()
rt.withdraw()
flnm = tkinter.filedialog.askopenfilename()
rt.destroy()
print(flnm)
実行時のダイアログウィンドウを図5に示す。
図5
読み込んだファイル名のExcelファイルからpandasのExcelFileクラス型のオブジェクトを次のスクリプトで生成する。
import pandas
xlsx_fl = pandas.ExcelFile(flnm)
ExcelFile型のオブジェクトからpandasのDataFrame型オブジェクトを次のスクリプトによって生成する。
data_xlsx =
pandas.read_excel(xlsx_fl, header =
None)
DataFrame型のオブジェクトはプロパティvaluesによってnumpyのndarray型の配列オブジェクトとして得ることができる。
次のスクリプトによりdataは図4に対応したndarray型配列内容になっている。
data =
data_xlsx.values
次のスクリプトは、dataのprintによる出力である。
print(data)
実行結果は以下のようである。
[['A' 'B' 'C']
[1 2 3]
[50 70 60]]
Excelデータからの読み込みスクリプト例は別のウェブサイトでも説明しているので参照されたい。
ファイル名の入力ダイアログウィンドウについても別のウェブサイトでも説明している。