Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the urvanov-syntax-highlighter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the advanced-ads domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。lancr ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114
ダイアログを使って、フォルダでファイルを一括選択する。 | 診療放射線技師がPythonをはじめました。

ダイアログを使って、フォルダでファイルを一括選択する。

ダイアログを使って、フォルダでファイルを一括選択する。

私たち放射線技師がDICOM画像を使って何か解析をしようとした際、CDやDVDといったメディアに画像を出力して自分のパソコンに取り込み、処理していることと思います。

そして、出力した画像はシリーズごとにフォルダに入っていますよね。


前回、前々会ではファイルを一つ、もしくは複数ファイルをそれぞれ選択して処理に回していきました。

今回は、フォルダを選択することで複数画像を一括で選択してしまおうという会です。


前回の「ダイアログを使って、ファイルを複数選択する。」

前々回の「ダイアログを使って、ファイルを選択する。」


処理の流れ

まずは、

①ファイル名の一覧を取得したいディレクトリの指定

②ファイル名の一覧を取得する

といった流れとなります。


一覧取得するフォルダの指定

まずは、前回のファイルを複数選択するコードです。

上記コードで今回修正するところは23行目

filenames = tkFileDialog.askopenfilenames(filetypes=fTyp, initialdir=iDir)

の行を以下のように変更します。

dirname = tkFileDialog.askdirectory(initialdir=iDir)

まず、ディレクトリを指定するので

dirnameという名前に変更します。

その後、

.askopenfilenames

の部分を

.askdirectory

と、filenamesからdirectoryに変更にします。

そして、引数の中のファイルタイプの指定 (filetypes=fTyp) は、ディレクトリの指定となるので必要なくなります。

これにより、一覧取得するフォルダの指定が完了です。


ファイル名取得

その後に、ファイル名の一覧取得になりますが、使用するモジュールはglobを使用しますのでまずはインポートしていきたいと思います。

7行目に以下のコードを追加します。

import glob

その後、26行目の return filenames の前に

filenames = glob.glob(dirname +”/*”)

の一文を追加します。

引数には、先ほど取得したディレクトリのパスを入れた変数名dirnameを入れます。

しかし、このままだとディレクトリを指定しているのでディレクトリの中を指定してあげるためにディレクトリのパスの後に / を追加する必要があるので

変数名dirname の後に  +”/*”  を追加してあげます。

なお、”*”はファイルの種類全てを指しています。もし、テキストファイルのみでしたら  +”/*.txt”とすることで絞り込むことができます。

以上で完了です。

以下が本日のコードとなります。

いかがでしたか?結果下の図のように表示されていませんか?

次回は、リストで取得したパスをひとつづつ取り出して画像表示していく方法をやってみたいと思います。


広告
デル株式会社

環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)


広告
上新電機 パソコン買取サービス

Categories:

,