Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでファイル選択ダイアログを表示し、テキストファイルを読み込む方法【Tkinter】

Tkinterのfiledialogモジュールとは

Pythonアプリケーションでダイアログボックスがどのように動作しているのか、疑問に思ったことはありませんか? その答えとなるのが、Tkinterに標準で用意されているfiledialogモジュールです。このモジュールには、システム上のファイルを扱うための各種ダイアログを表示できる組み込み関数が多数含まれています。

中でもよく使われるのがfiledialog.askopenfilename()です。この関数を呼び出すと、ユーザーはシステム内のファイルをブラウズして選択できるようになります。選択されたファイルの種類に応じて、スクリプト側で読み込み・書き込みなどの処理を実行するようプログラミングします。

ファイルを選択したら、open(ファイルパス, 'モード')関数でファイルを開き、任意のモードで操作を行います。ここでは、ユーザーにテキストファイルを開いてもらい、その内容を「read(読み込み)」モードで読み取って表示するシンプルなアプリケーションを作成してみましょう。

サンプルコード

# ライブラリをインポート
from tkinter import *
from tkinter import filedialog

# ウィンドウのインスタンスを作成
win = Tk()

# ウィンドウのサイズを設定
win.geometry("700x300")

# ラベルを作成
Label(win, text="ボタンをクリックしてダイアログを開く", font='Arial 16 bold').pack(pady=15)

# システム上のファイルを開く関数
def open_file():
    filepath = filedialog.askopenfilename(
        title="テキストファイルを開く",
        filetypes=(("テキストファイル", "*.txt"), ("すべてのファイル", "*.*"))
    )
    # ファイルが選択された場合のみ読み込む
    if filepath:
        with open(filepath, "r", encoding="utf-8") as file:
            print(file.read())

# ダイアログを起動するボタンを作成
button = Button(win, text="開く", command=open_file)
button.pack()

win.mainloop()

コードのポイント

  • filetypes引数:ダイアログに表示するファイル形式を指定できます。「*.txt」でテキストファイルに絞り込んだり、「*.*」ですべてのファイルを表示したりできます。
  • キャンセル時の処理:ユーザーがダイアログを閉じると空文字列が返されるため、if文でチェックしてエラーを防いでいます。
  • withステートメント:ブロックを抜けると自動的にファイルが閉じられるため、close()の呼び忘れを防げます。
  • encoding="utf-8":文字コードを明示することで、日本語を含むファイルなどでの文字化けを防ぎます。

実行結果

上記のコードを実行すると、「開く」ボタンが配置されたウィンドウが表示されます。

Pythonでファイル選択ダイアログを表示し、テキストファイルを読み込む方法【Tkinter】

ボタンをクリックするとファイル選択ダイアログが開きます。テキストファイルを選択して開くと、コンソールにファイルの全内容が出力されます。

Centralized Database Vs Blockchain

A blockchain can be both permissionless (like Bitcoin or Ethereum) or permissioned (like the different Hyperledger blockchain frameworks). A permissionless blockchain is also known as a public blockchain, because anyone can join the network...
(以下、選択したファイルの内容がすべて出力されます)

フォルダ(ディレクトリ)を選択したい場合

ファイルではなくフォルダを選択させたい場合は、filedialog.askdirectory()関数を使用します。

# フォルダ選択ダイアログを表示
folderpath = filedialog.askdirectory(title="フォルダを選択してください")
print(folderpath)

この関数を組み合わせれば、指定したフォルダ内の複数ファイルを一括で処理するツールなども簡単に作成できます。

まとめ

Tkinterのfiledialogモジュールを使えば、わずか数行のコードでネイティブなファイル選択ダイアログを実装できます。askopenfilename()でファイルを、askdirectory()でフォルダを選択でき、取得したパスをopen()関数に渡すことで読み書き処理へつなげられます。デスクトップアプリ開発の幅が大きく広がるので、ぜひ活用してみてください。

  1. Pythonでテキストファイルを読み込む方法を徹底解説!read()・readline()・readlines()の違いと使い分け

    テキストファイルとは、単純な文字情報のみで構成されたファイルのことです。Pythonには、テキストファイルを読み書きするための組み込み関数が標準で用意されており、追加のライブラリをインストールすることなく手軽にファイル操作が行えます。この記事では、Pythonでテキストファイルを読み込む3つの方法について、具体的なコード例とともに詳しく解説します。テキストファイルを読み込む3つの方法Pythonでテキストファイルを読み込む際に使える主なメソッドは以下の3つです。read() — ファイル全体を一度に読み込み、すべての内容を1つの文字列として返します。readline() — ファイルから1行だ

  2. PythonのTkinterでファイル選択ダイアログを使い、選択したディレクトリの場所を表示・保存する方法

    ダイアログボックスは、さまざまな種類のアプリケーションでおなじみのUI要素であり、ユーザーとの対話が重要となるアプリケーション開発において非常に役立ちます。ダイアログボックスを利用すれば、ユーザーにファイルの選択を求め、その後、ファイルの読み込みや書き込みといった操作を実行できます。Pythonでは、filedialogモジュールを使用することで、こうしたダイアログボックスを簡単に作成できます。 サンプルコード 以下の例では、ローカルディレクトリからファイルを選択するようユーザーに促し、選択されたファイルの場所(パス)をラベルウィジェットで表示するアプリケーションを作成します。 #Import