Python|ファイルのコピー・移動・削除を行う方法(shutilモジュール)

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によるファイル管理を自動化したり、バックアップや整理作業を効率よく進められます。

実務でも、「毎日特定フォルダのファイルを仕分けたい」「更新前に自動でバックアップしたい」といった場面で非常に役立ちます。
まずは自分の環境で試してみて、少しずつ応用の幅を広げていきましょう。

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