はじめに
この記事では、Pythonを使用して特定の拡張子のファイル(PDFファイルなど)を別のフォルダに移動させる方法について解説します。このスクリプトは、親フォルダ以下のすべての階層を対象にファイルを探し、拡張子が指定したものと一致する場合に、指定したフォルダに移動します。
例えば、以下のようなフォルダ構成を考えます。
親フォルダ > 子1フォルダ、子2フォルダ > 孫1フォルダ、孫2フォルダ
このようなフォルダ構成で、それぞれの孫フォルダにあるPDFファイルを、親フォルダと同じ階層に新しく作成したフォルダにまとめて移動する手順を見ていきます。
必要なモジュール
Pythonの標準ライブラリである os
と shutil
を使用します。これらはPythonに標準で含まれているため、追加のインストールは不要です。
import os
import shutil
スクリプトの説明
次に、実際にPDFファイルを移動するPythonスクリプトを紹介します。このスクリプトは親フォルダ内の全階層を対象に、特定の拡張子(今回は.pdf
)を持つファイルを別のフォルダに移動させます。
import os
import shutil
# 親フォルダのパスを指定
parent_folder = "path/to/parent_folder"
# 親フォルダと同じ階層に移動先フォルダを作成
destination_folder = os.path.join(os.path.dirname(parent_folder), "PDF_Files")
os.makedirs(destination_folder, exist_ok=True)
# フォルダ内を再帰的に探索し、PDFファイルを移動
for root, dirs, files in os.walk(parent_folder):
for file in files:
if file.endswith('.pdf'):
# PDFファイルの絶対パスを取得
file_path = os.path.join(root, file)
# 移動先のパスを設定(新しいフォルダに移動)
new_location = os.path.join(destination_folder, file)
# ファイルを移動
shutil.move(file_path, new_location)
print(f"Moved: {file_path} to {new_location}")
print("All PDF files have been moved to the new folder.")
スクリプトの動作
- 親フォルダのパス指定
parent_folder
に親フォルダのパスを指定します。ここから、フォルダ内を再帰的に探索し始めます。 - 移動先フォルダの作成
destination_folder
で、親フォルダと同じ階層に新しいフォルダ(PDF_Files
)を作成します。os.makedirs(destination_folder, exist_ok=True)
により、すでに同じ名前のフォルダが存在していてもエラーは発生しません。 - ファイルの探索と移動
os.walk()
を使って親フォルダ以下のすべてのフォルダ・サブフォルダを再帰的に探索します。.pdf
という拡張子を持つファイルを見つけたら、shutil.move()
を使って新しいフォルダに移動します。
拡張子を変えれば他のファイル形式にも対応可能
このスクリプトでは、拡張子が .pdf
のファイルを探していますが、他のファイル形式にも簡単に対応できます。例えば、画像ファイル(.jpg
や.png
)を移動させたい場合、以下のように if file.endswith()
部分を変更すれば対応可能です。
if file.endswith('.jpg') or file.endswith('.png'):
# 画像ファイルを移動する処理
このように、特定の拡張子に対応するファイルのみを選んで移動させることができます。
フォルダ構造が深くても対応可能
os.walk()
を使用しているため、フォルダの階層がどれだけ深くても、親フォルダ以下のすべてのサブフォルダを再帰的に探索し、指定した拡張子のファイルを移動できます。例えば、親フォルダの中に何層ものサブフォルダがあっても、各階層のPDFファイルをすべて一括で移動することができます。
まとめ
このPythonスクリプトを使えば、フォルダ内の特定の拡張子のファイルを簡単に別のフォルダに移動することができます。また、拡張子を変えれば画像ファイルやテキストファイルなど、さまざまなファイル形式に対応できます。フォルダ構造が深くても問題なく動作するため、複雑なフォルダ管理にも役立ちます。
コメント