(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)
例えば、上記スクリプトを実行すると以下のようなダイアログが開かれる。
--multiple
multipuleオプションを付けると、複数のファイルを選択できる。
--separator=セパレーター
複数のファイルを選択した場合の区切り文字を設定
--directory
ファイル選択ではなく、ディレクトリのみ選択できる。
Python3からZenifyを利用すると、UIの部分が極めて簡単に記述できる。Zenityの別の機能とpython3との連携については別のページにアップする予定。