見出し画像

【初心者必見】Pythonでファイルを作成日に応じて自動的に整理する方法

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

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

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

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

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

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

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

まずは、ファイルを整理したいフォルダと整理先のフォルダを準備してください。

今回は、2024年4月に作成したデータを準備しました。
他の記事と同じものの使いまわしですが( ^ω^)笑

testフォルダ内に作成日が2024年4月のデータがあります

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

2.Pythonスクリプトの準備

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

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

import os
import shutil
from datetime import datetime

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

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

# ファイルを作成日に基づいて分類する関数
def classify_files_by_creation_date(directory):
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)
        if os.path.isfile(file_path):
            # ファイルのメタデータから作成日を取得
            creation_time = os.path.getctime(file_path)
            date_folder = datetime.fromtimestamp(creation_time).strftime('%Y/%m')
            
            # 分類先のフォルダパスを生成
            destination_folder = os.path.join(destination_base, date_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_creation_date(source_directory)

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

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

例えば2024年4月なら2024年を作成し、そのフォルダ内に4月のフォルダを作成してくれる感じです。

年だけ、または年と月と日のようにフォルダの分類の細かさを変更したい場合は、以下の「strftime('%Y/%m')」部分を変えてください👇

date_folder = datetime.fromtimestamp(creation_time).strftime('%Y/%m')

2024年の場合(年のみを表示)

strftime('%Y')

2024年4月の場合(年と月を表示)
自動作成されるフォルダ名に「年」や「月」を加えたい場合は「%Y」の後に付け加えて下さい。

strftime('%Y年%m月')

2024年4月14日の場合(年、月、日を表示)

strftime('%Y年%m月%d日')

とりあえず、先ほどのスクリプトをコピペすると、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スクリプトの実行

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

まず、2024年のフォルダが作成されています。

次に、4月のフォルダ

最後に、それぞれの該当データが4月のフォルダ内に入っていることがわかります。

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

4.まとめ

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

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

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

  3. Pythonスクリプトの実行

上記の内容が実行できれば、ワンクリックで特定のフォルダ内にあるファイルをその作成日(正確には最終更新日)に応じて自動的に分類できるようになります!

前任者の過去データが全く分類されておらず、ムカついた経験のある方にとっては役立つ方法ではないでしょうか?笑

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

  • ファイルの種類

  • ファイルの名前

  • ファイルのサイズ

  • ファイルの内容

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

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

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

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