もくじ
目標
拡張子別にフォルダを作成して格納します。
そのとき、フォルダ名を任意の名前に自動で変更します。
Automatorだと拡張子名のフォルダ名になると思いますが、それを任意に指定できるようにします。
必要なフォルダ構成を作る
デスクトップにtest
フォルダにfrom
フォルダとto
フォルダを用意します。
test ├──from └──to
test
フォルダ直下にseparate.py
というファイルを作成し、from
フォルダ内にtxtファイルとjpgファイルを格納します。to
フォルダは空のままでOKです。
今回は画像のような構成にしました。
自動化するPython
先ほど作成したseparate.py
の中身を以下のようにします。
import os import shutil file_extensions = ['jpg', 'txt'] // ◆ #読み取りたいディレクトリパスを入れる read_path = './from' read_files = os.listdir('./from') #拡張子リストを取得するfor文を追加する for file_extension in file_extensions: if(file_extension == 'jpg'): // ▲1 file_extension_folder = '画像ファイル' // ▲2 if(file_extension == 'txt'): // ★1 file_extension_folder = 'テキストファイル' // ★2 os.mkdir('./to/' + file_extension_folder) #指定の拡張子だけのファイル名をリストを作る file_list = [] for file_name in read_files: if file_name.endswith(file_extension): file_list.append(file_name) #read_listから、指定の拡張子のファイルだけ指定のディレクトリにコピーする for file_name in file_list: move_from = './' + read_path + '/' + file_name move_to = './to/' + file_extension_folder + '/' shutil.move(move_from, move_to)
◆部分で、フォルダ別に格納したい拡張子をしています。もしjpg
とtxt
以外にもファイルがあるなら増やすことが可能です。
▲1にある拡張子を▲2のフォルダ名を作成して格納します。
同様に★1にある拡張子を★2のフォルダ名を作成して格納します。
フォルダがなければ作成し、すでにフォルダがある場合は格納のみ実行します。
実行してみる
ここは飛ばしてもいい項目です。
ターミナルが使える方はここで終了してもいいかもです。
$ python3 separate.py
ファイルが分別されたはずです。
ではファイル構成を元に戻してください。
Automator
設定
ファイル>新規
をクリックしてアプリケーションを選択します。
「シェルスクリプトを実行」を検索します。
検索で出てきた項目を右側にドラッグ&ドロップします。
この欄を埋めていきます。
Pythonファイルのディレクトリ確認
ターミナルを起動して以下を実行。
Pythonの実行ファイルがあるディレクトリを検索できます。
$ which python3 /Library/Frameworks/Python.framework/Versions/3.9/bin/python3
私の場合はLibrary
配下のようですね。この結果は人によって異なるかもしれません。
コマンドを入力
cd /Users/****/Desktop/test // testフォルダのパスを指定 /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 separate.py
解説。
cd /Users/****/Desktop/test
test
フォルダのパスを指定してcd
コマンドを使って移動します。
test
フォルダのパスは、Finderでtestフォルダを右クリックしメニューを出した後optionを押してください。パスをコピーできます。
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 separate.py
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
の部分は先ほど検索したPythonの実行ファイルをパスごと指定しています。
そのあとに作成したseparate.py
を指定することで、separate.py
をPythonの実行ファイルで実行できます。
Automator実行
右上の「実行」ボタンを押して実行してみましょう。
ファイルが分別されたら完成です。
Automator保存
この自動化したAutomatorをファイル>保存
からtestフォルダに保存します。名前はseparate.app
としました。
手順
from
フォルダに分別したいファイルを格納- separate.appをダブルクリックで実行
- 「ファイルにアクセスしようとしています」のダイアログをOKする
to
フォルダにフォルダ別にファイルが移動
今後はこれだけの手順でファイルをフォルダ別に分別できます。
お疲れ様でした!
参考URL
大量のファイルを一瞬で、種類ごとのフォルダに移動させる|Python自動化 | キノコード
Python ファイルのコピーと移動 - Python のファイル操作 - Pythonのきほん - やさしい Python 入門
Automatorを使うと、クリック1つでPythonとかのプログラムを起動させられるんだってさ(Mac) - Qiita