Pythonでフォルダ内のファイルを一括整理する方法!コード付きで解説

はじめに

日々の作業で、大量のファイルがフォルダ内に散乱してしまうことはありませんか?特に、写真やドキュメント、スクリプトなどがごちゃごちゃになり、探すだけで時間がかかることも。そんなとき、Pythonを使えば効率的にファイルを整理することができます。

この記事では、macOS環境を想定し、Pythonでフォルダ内のファイルを一括整理する方法を紹介します。基本的なスクリプトから実践的な使い方まで幅広くカバーするので、ぜひ参考にしてください!


準備

まず、Pythonをインストールしていない場合は、公式サイト(https://www.python.org)からインストールしてください。macOSではデフォルトでPythonがインストールされている場合もありますが、最新バージョンを使用することをおすすめします。

この記事で使用するライブラリは以下の2つです。

  • os: 標準ライブラリ。フォルダやファイル操作を簡単に行えます。
    主な用途:
    1.フォルダ内のファイル一覧を取得する(例: os.listdir()
    2.ファイルパスを操作する(例: os.path.join()
  • shutil: ファイルの移動やコピーを行うための標準ライブラリ。
    主な用途:
    1.ファイルを移動する(例: shutil.move()
    2.フォルダをコピーする(例: shutil.copytree()

これらはPythonに標準で含まれているため、追加のインストールは不要です。
ファイル整理を効率化する際に役立つ基本的なライブラリです。


フォルダ整理スクリプト

以下のスクリプトを使えば、指定したフォルダ内のファイルを拡張子ごとに整理して、適切なサブフォルダに自動で移動できます。

例えば下記 organize_files というフォルダがあります。
その中に

  • pngファイル3種類
  • py(Pythonの拡張子)ファイル2種類
  • txtファイル2種類

を用意します。(下記がイメージです)

後述のコードで分かりやすいようにファイルを少なくしておりますが、ファイルが増えてくると管理が大変になってくると思います。
そこで今回は拡張子ごとにフォルダを自動で作成し、ファイルを追加していくスクリプトを紹介します。

 

コード例

fileOrganize.py

import os
import shutil

def organize_files(folder_path):
    # フォルダ内のすべてのファイルを取得
    for file_name in os.listdir(folder_path):
        file_path = os.path.join(folder_path, file_name)

        # ファイルかどうかを確認
        if os.path.isfile(file_path):
            # ファイルの拡張子を取得
            file_extension = file_name.split('.')[-1]

            # サブフォルダのパスを作成
            subfolder_path = os.path.join(folder_path, file_extension)

            # サブフォルダが存在しない場合は作成
            if not os.path.exists(subfolder_path):
                os.makedirs(subfolder_path)

            # ファイルをサブフォルダに移動
            shutil.move(file_path, os.path.join(subfolder_path, file_name))
            print(f"{file_name} を {subfolder_path} に移動しました!")

# フォルダパスを指定
folder_path = "/Users/organize_files"  # 整理したいフォルダのパスを指定
organize_files(folder_path)

実行結果

拡張子の名前がついたフォルダが作成され、それぞれ拡張子ごとファイルに追加されたことが分かります!

※実行結果に現れる隠しファイルについて
macOSでは、.DS_Store という隠しファイルが自動的に作成されることがあります。このファイルは、Finderがフォルダの設定情報を保存するためのものです。そのため、今回のスクリプト実行時に .DS_Store がフォルダ内に存在している場合、スクリプトがこのファイルも処理対象として扱い移動させます。

動作には影響がないので、このまま進めても問題ありません。


コード解説

  1. os.listdir(folder_path):
    ・指定したフォルダ内に存在するファイルやサブフォルダの一覧をリストとして取得します。
    ・このリストには、隠しファイル(例: .DS_Store)も含まれます。
  2. os.path.isfile(file_path):
    • 指定したパスがファイルであるかどうかを確認します。
    • フォルダは対象外とし、ファイルのみを整理するために使用します。
    • 例えば、フォルダ名が含まれていても、そのフォルダは無視されます。
  3. file_name.split('.')[-1]:
    • ファイル名を .(ドット)で区切り、リストとして取得します。
    • [-1] を指定することで、リストの最後の要素、つまりファイルの拡張子を取得します。
    • 例: example.txt['example', 'txt']txt
  4. os.makedirs(subfolder_path):
    • 指定したパスのサブフォルダが存在しない場合に新たに作成します。
    • すでに存在する場合は何もせず、エラーも発生しません。
  5. shutil.move(file_path, subfolder_path):
    • ファイルを指定したサブフォルダに移動します。
    • 移動先が既存のファイルと重複していないか自動でチェックし、重複がある場合は上書きされます。

まとめ

Pythonを使えば、フォルダ内のファイル整理が非常に簡単に自動化できます。本記事で紹介したスクリプトを応用すれば、日付や特定の条件での分類も可能です。普段の作業効率を上げるために、ぜひ試してみてください!

この記事が役に立った場合は、SNSなどでシェアしていただけると嬉しいです。

タイトルとURLをコピーしました