1. はじめに
Pythonを使ってファイルのコピー・移動・削除を自動化できると、日々の作業効率が格段にアップします。
本記事では、Pythonの標準ライブラリであるshutilモジュールを使って、ファイルやフォルダの操作(コピー・移動・削除)を行う方法について解説します。
「Python|ファイルのコピー・移動・削除を行う方法(shutilモジュール)」というテーマで、基本的な使い方から実務に活かせる応用例まで、初心者にもわかりやすく丁寧に説明していきます。
2. shutilモジュールの基本とPythonでできるファイル操作
2-1. shutilモジュールとは?
shutil
モジュールは、Pythonに標準で搭載されているファイル・ディレクトリ操作用のライブラリです。ファイルやディレクトリのコピー、移動、削除といった処理を簡単に行うことができます。
2-2. ファイルをコピーする(shutil.copy)
import shutil
# sample.txt を copy_sample.txt にコピー
shutil.copy('sample.txt', 'copy_sample.txt')
実行結果:
sample.txt の内容が copy_sample.txt にコピーされました。
2-3. ファイルを移動する(shutil.move)
import shutil
# copy_sample.txt を backup ディレクトリへ移動
shutil.move('copy_sample.txt', 'backup/copy_sample.txt')
実行結果:
copy_sample.txt が backup フォルダへ移動されました。
2-4. ファイル・ディレクトリを削除する(os.remove, shutil.rmtree)
import os
import shutil
# ファイルの削除
os.remove('sample.txt')
# ディレクトリ(とその中身)の削除
shutil.rmtree('backup')
実行結果:
sample.txt が削除され、backup ディレクトリも削除されました。
3. よくある使い方・応用例
3-1. 拡張子でファイルを仕分けして移動する
実務では、画像ファイル・テキストファイルなどを分類して処理するケースがよくあります。以下は、フォルダ内の画像ファイルだけを指定フォルダに移動する例です。
import os
import shutil
source_dir = 'downloads'
image_dir = 'images'
# images ディレクトリがなければ作成
os.makedirs(image_dir, exist_ok=True)
# 拡張子をチェックして移動
for filename in os.listdir(source_dir):
if filename.endswith(('.jpg', '.png')):
shutil.move(os.path.join(source_dir, filename),
os.path.join(image_dir, filename))
実行結果:
downloads 内の .jpg / .png ファイルが images フォルダに移動されました。
3-2. 一時バックアップの自動作成
ファイル更新前に自動でバックアップを作成する処理です。
import shutil
import datetime
import os
# バックアップ先フォルダの作成
backup_dir = 'backup'
os.makedirs(backup_dir, exist_ok=True)
# 日時をファイル名に付けてバックアップ
timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
shutil.copy('data.csv', f'{backup_dir}/data_{timestamp}.csv')
実行結果:
data.csv のバックアップファイルが backup フォルダに data_20250714_103000.csv という形式で保存されました。
4. 注意点・エラー対策
4-1. ファイル・ディレクトリが存在しない場合の対策
ファイルやフォルダが存在しないとエラーになります。事前に存在確認することで防げます。
import os
if os.path.exists('sample.txt'):
os.remove('sample.txt')
else:
print('ファイルが存在しません')
実行結果:
ファイルが存在しません
4-2. 上書きや削除のリスクに注意
ファイルのコピーや移動時に、同名ファイルがあると上書きされてしまいます。事前にチェックして処理を分岐させましょう。
import os
import shutil
destination = 'copy_sample.txt'
if not os.path.exists(destination):
shutil.copy('sample.txt', destination)
else:
print('既に同名ファイルが存在します')
実行結果:
既に同名ファイルが存在します
5. まとめ
本記事では、shutilモジュールを使ったファイルのコピー・移動・削除の基本から、応用的な使い方、注意点までを解説しました。
shutil.copy
→ ファイルをコピーshutil.move
→ ファイルやフォルダを移動os.remove / shutil.rmtree
→ ファイル・ディレクトリを削除
これらを活用することで、Pythonによるファイル管理を自動化したり、バックアップや整理作業を効率よく進められます。
実務でも、「毎日特定フォルダのファイルを仕分けたい」「更新前に自動でバックアップしたい」といった場面で非常に役立ちます。
まずは自分の環境で試してみて、少しずつ応用の幅を広げていきましょう。