Up

ファイル名ダイアログウィンドウと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

 

これを防ぐために、tkinterTkオブジェクトをスクリプト中で生起して名前を付け、図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を用いているが、pandasExcelファイルの読み込みにおいてモジュールxlrdを用いているので、これらのモジュールをインストールしておく必要がある。例えば、

 

pip install pandas xlrd

 

である。importpandasだけでよい。

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ファイルからpandasExcelFileクラス型のオブジェクトを次のスクリプトで生成する。

 

import pandas

xlsx_fl = pandas.ExcelFile(flnm)

 

ExcelFile型のオブジェクトからpandasDataFrame型オブジェクトを次のスクリプトによって生成する。

 

data_xlsx = pandas.read_excel(xlsx_fl,  header = None)

 

DataFrame型のオブジェクトはプロパティvaluesによってnumpyndarray型の配列オブジェクトとして得ることができる。

次のスクリプトによりdataは図4に対応したndarray型配列内容になっている。

 

data = data_xlsx.values

 

次のスクリプトは、dataprintによる出力である。

 

print(data)

 

実行結果は以下のようである。

 

[['A' 'B' 'C']

 [1 2 3]

 [50 70 60]]

 

Excelデータからの読み込みスクリプト例は別のウェブサイトでも説明しているので参照されたい。

ファイル名の入力ダイアログウィンドウについても別のウェブサイトでも説明している。

 

 

Up