見出し画像

【初心者必見】Pythonでファイルの種類に応じて自動的に整理する超簡単な方法

「フォルダが整理できない!」
「どんどんファイルが溜まっていくけどどうやって分類すればいいの!?」
「Pythonで自動的に分類できるって聞いたけどどうすればいいの?」

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

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

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

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

前提として、私はPythonのことはほとんど分かっていません。

一度かじろうとしましたが、30代になり本業の責任が増す中、3歳と5歳の娘、オンラインで私以上の収入を稼ぐ妻…自分の時間がほとんどとれない中で腰を据えてプログラミングの勉強ができず、速攻で挫折しました…

しかし!
こんな私でも、ChatGPTを使うことでスクリプトを出力してもらい、簡単にPythonを実行できるようになりました!

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

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

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

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

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

整理したいフォルダの中身と移動先フォルダ

2.Pythonスクリプトの準備

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

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

import os
import shutil

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

# 分類先のベースディレクトリ(変更が必要な場合はここを編集してください)
destination_base = 'path/to/your/destination/directory'

# ファイルの種類ごとに分類先フォルダを定義(ここを編集して新しいファイルタイプを追加してください)
file_type_folders = {
    '.txt': 'TextFiles',
    '.pdf': 'PDFs',
    '.jpg': 'Images',
    '.png': 'Images',
    # 例: '.docx': 'WordDocuments',
}

# ファイルを適切なフォルダに分類する関数
def classify_files(directory):
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)
        
        # ファイルの拡張子を取得
        _, file_extension = os.path.splitext(filename)
        
        # 拡張子に基づいてファイルを分類
        if file_extension in file_type_folders:
            destination_folder = os.path.join(destination_base, file_type_folders[file_extension])
            
            # 分類先のフォルダが存在しない場合は作成
            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(source_directory)


このスクリプトは、指定されたディレクトリ内のファイルを調べ、ファイルの拡張子に基づいて適切なフォルダに分類してくれるものです。

しかも、ファイルの種類ごとに分類先のフォルダを自動で作成してくれます。

具体的にはこの部分👇

# ファイルの種類ごとに分類先フォルダを定義(ここを編集して新しいファイルタイプを追加してください)
file_type_folders = {
    '.txt': 'TextFiles',
    '.pdf': 'PDFs',
    '.jpg': 'Images',
    '.png': 'Images',
    # 例: '.docx': 'WordDocuments',
}

このように、txt形式のファイルなら「TextFiles」というフォルダを自動で作成してくれます。

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

とりあえず、コピペ後はPythonの実行環境である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フォルダ内にあるファイルが移動先フォルダ内に自動的に分類されたのが分かります。

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

PNGファイルはimagesフォルダに
PDFファイルはPDFsフォルダに
txtファイルはTextFilesフォルダに

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

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

4.まとめ

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

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

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

  3. Pythonスクリプトの実行

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

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

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

  • ファイル名

  • ファイルの作成日

  • ファイルのサイズ

  • ファイルの内容

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

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

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

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