ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Python3でもっと簡単にファイルを選択する

(2021-10-13 初稿 - )

以前に、python3でtkを用いてファイルを選択するページを記述した。

今回は、Zenityという便利なコマンドを発見したので、もっともっと簡単にファイルを選択する方法について記述する。

さて、この本題に入る前にzenityについてのサイトを紹介しておく。とても便利なコマンドで、LinuxだけでなくRaspberry Pi(ラズパイ)でも標準でインストールされており、もっと早く存在を知りたかった。

今回は、Zenityの機能のうち、ファイル選択のみを紹介する。

簡単にファイルを選択するスクリプト

さっそく、python3でファイル選択ダイアログを表示して、ファイルを選択するスクリプトを紹介する。

pyhton3から外部のプログラムを利用するため、subprocess.runを用いる。また、Zenityは選択したファイル名をバイナリ形式で標準出力に出力する。

#!/usr/bin/env python3
import subprocess

# Zenityの起動、stdoutをpipeに
result = subprocess.run(['zenity','--file-selection'], stdout=subprocess.PIPE)
print(result.stdout.decode("utf-8"))    # 出力をUTF-8

オプション

--filename=ファイル名

例えば、以下の場合は、Downloadsディレクトリを開き選択する。

result = subprocess.run(['zenity','--file-selection --filename=/home/hoge/Dropbox/kml/'], stdout=subprocess.PIPE)

例えば、上記スクリプトを実行すると以下のようなダイアログが開かれる。

f:id:hymd3a:20211013194606p:plain

--filenameオプションを付けたファイル選択ダイアログ

--multiple

multipuleオプションを付けると、複数のファイルを選択できる。

--separator=セパレーター

複数のファイルを選択した場合の区切り文字を設定

--directory

ファイル選択ではなく、ディレクトリのみ選択できる。

 

Python3からZenifyを利用すると、UIの部分が極めて簡単に記述できる。Zenityの別の機能とpython3との連携については別のページにアップする予定。

関連ページ