見出し画像

【超簡単】Pythonでファイル名に応じて自動的にフォルダ分けする方法

「ファイル名に応じて自動的にフォルダに分類できる方法が知りたい!」
「どんどんファイルが溜まっていくけどどうやって分類すればいいの!?」
「Pythonで自動的に分類できるって聞いたけどどうすればいいの?」

本記事ではこのような方を対象に、Pythonで特定のフォルダ内にあるファイルをファイル名に応じて自動的に各フォルダに分類する方法をご紹介します。

■本記事で分かること
Pythonで特定のフォルダ内にあるファイルをファイル名に応じて自動的に各フォルダに分類する方法

■本記事の信頼性
私は、本業でChatGPTなどのAIツールを活用して効率化を実現。ほぼ毎日定時で帰宅し、家族との充実した時間を確保している「なおき」といいます。

AIと全く無縁の体育系で文系出身(数学Ⅱで終わりました)の私でもできる時短術をわかりやすく説明できるよう、Xなどを活用して情報発信しています。

今回は、非エンジニアでもできる「Pythonで特定のフォルダ内にあるファイルをファイル名に応じて自動的に各フォルダに分類する方法」をご紹介します!

1.Pythonで整理したいフォルダの準備

まずは、ファイル名がごちゃまぜで整理できていないフォルダと整理先のフォルダを準備してください。

今回は、ダウンロードしてファイルを置きっぱなしにした挙句、無数のファイルが混在しやすいダウンロードフォルダの中に「test」フォルダを作り、「Reports」、「Invoices」、「Memos」という名前のファイルを混在させてみました。

ファイル名が混ざったフォルダ

それぞれのファイルはtxt、PNG、PDFのようにファイル形式は問いません。

あわせて、testフォルダ内に各ファイルを分類させるための「移動先フォルダ」を作成してみましょう。

2.Pythonスクリプトの準備

次に、Pythonスクリプトを準備します。

以下のスクリプトをお使いの実行環境(VScodeなど)にコピペして下さい。

import os
import shutil

# 分類するファイルがあるディレクトリ
source_directory = 'path/to/your/source/directory'

# 分類先のベースディレクトリ
destination_base = 'path/to/your/destination/directory'

# ファイル名のキーワードに基づく分類先フォルダを定義
# ここに新しいキーワードとフォルダ名のペアを追加してください
filename_keywords_folders = {
    'report': 'Reports',
    'invoice': 'Invoices',
    'memo': 'Memos',
    # 例: 'project': 'ProjectFiles',
}

# ファイルを適切なフォルダに分類する関数
def classify_files_by_name(directory):
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)
        destination_folder = None
        
        # ファイル名に特定のキーワードが含まれているかチェック
        for keyword, folder_name in filename_keywords_folders.items():
            if keyword in filename.lower():
                destination_folder = os.path.join(destination_base, folder_name)
                break
        
        # キーワードに基づいてファイルを分類
        if destination_folder:
            # 分類先のフォルダが存在しない場合は作成
            if not os.path.exists(destination_folder):
                os.makedirs(destination_folder)
            
            # ファイルを移動
            shutil.move(file_path, destination_folder)
            print(f'Moved: {file_path} -> {destination_folder}')

# スクリプトの実行
if __name__ == '__main__':
    classify_files_by_name(source_directory)

このスクリプトは、指定されたディレクトリ内のファイルを調べ、指定したキーワードに応じて自動的に指定先のフォルダに各ファイルを分類してくれるものです。

しかも、指定したキーワードごとに分類先のフォルダを自動で作成してくれます。

具体的にはこの部分👇

# ファイル名のキーワードに基づく分類先フォルダを定義
# ここに新しいキーワードとフォルダ名のペアを追加してください
filename_keywords_folders = {
    'report': 'Reports',
    'invoice': 'Invoices',
    'memo': 'Memos',
    # 例: 'project': 'ProjectFiles',

ご覧の通り、「report」のキーワードを含むファイルなら「Reports」というフォルダを自動で作成してくれるようになっています。

もちろん、キーワードやフォルダ名はご自身の好みに合わせて変更可能ですので、変更したい方は適宜の名前にしてくださいね!

とりあえず、コピペ後はPythonの実行環境であるVSCode上で見るとこんな感じ👇になります。

VSCodeに貼り付けるとこんな感じ

このままだと、ファイルのあるフォルダと移動先のフォルダのパスが指定されていない状態なので、以下の部分を指定のフォルダのパスにしてください。

【変更する箇所】

# 分類するファイルがあるディレクトリ
source_directory = 'path/to/your/source/directory'

# 分類先のベースディレクトリ
destination_base = 'path/to/your/destination/directory'

【変更後】
注意点として、スラッシュを「\\」のように2つにすることを忘れないでください。

# 分類するファイルがあるディレクトリ
source_directory = 'C:\\Users\\・・・・・\\test'

# 分類先のベースディレクトリ(変更が必要な場合はここを編集してください)
destination_base = 'C:\\Users\\・・・・・\\test\\移動先フォルダ'

先ほど設定した「test」フォルダと「移動先フォルダ」をパスに入れました。

ここまで出来たら、あとは実行するだけです!

3.Pythonスクリプトの実行

実行すると、以下のように自動で分類されました!

分類後の様子

testフォルダ内にあるファイルが移動先フォルダ内に自動的に分類されたのが分かります。

個別のフォルダ内を見てみると…

reportのキーワードを含むファイルはReportsフォルダへ
invoiceのキーワードを含むファイルはInvoicesフォルダへ
memoのキーワードを含むファイルはMemosフォルダへ

それぞれ、指定のフォルダ内に自動で分類されました!

以上で、作業は終了です。
お疲れ様でした!!

4.まとめ

今回は、「Pythonで特定のフォルダ内にあるファイルをファイル名に応じて自動的に各フォルダに分類する方法」をテーマに紹介しましたが、いかがだったでしょうか?

  1. 分類したいファイルと分類先のフォルダの準備

  2. Pythonスクリプトの設定とパス(URL)等の入力

  3. Pythonスクリプトの実行

上記の内容が実行できれば、ワンクリックで特定のフォルダ内にあるファイルをその名前に応じて自動的に分類できるようになります!

ダウンロードフォルダといったファイルが溜まりやすいフォルダを整理するのに役立つのではないでしょうか??

また、Pythonでは種類に応じた分類だけでなく

  • ファイルの種類

  • ファイルの作成日

  • ファイルのサイズ

  • ファイルの内容

このような分類も自動でできるようになります。
実際にやってみたい方はコチラ👇

今回紹介した内容で皆さんの業務が少しでも効率化できれば、スキ、SNSでの紹介をしていただけると大変励みになりますので、何卒よろしくお願いします!

このほか、AI×時短術の知識をX(旧Twitter)で紹介していますので、是非フォローしてください!


この記事が気に入ったらサポートをしてみませんか?