Pythonのファイルコピー・移動・削除の方法を完全ガイド!初心者でもわかるshutilモジュールの使い方
生徒
「Pythonでファイルをコピーしたり、移動したり、削除したりってできますか?」
先生
「もちろん可能ですよ!Pythonにはshutil(シャトル)というモジュールがあって、ファイル操作が簡単にできるようになっています。」
生徒
「しゅ…シャトル?それってどうやって使うんですか?」
先生
「まずは、コピー・移動・削除の基本から一緒に見ていきましょう!」
1. shutilモジュールとは?
shutil(シャトル)モジュールは、Pythonでファイルやフォルダをコピー・移動・削除するための便利な道具箱のようなものです。
普段、パソコンでマウスを使ってファイルをドラッグ&ドロップしたり、ゴミ箱に入れたりしますよね?それと同じことが、Pythonのプログラムでもできるようになるのがshutilです。
2. ファイルをコピーする方法(copy)
まずは、ファイルをコピーする方法から説明します。コピーとは、元のファイルをそのままにして、別の場所に同じファイルを作る操作です。
Pythonでは、以下のように書きます:
import shutil
# ファイルをコピー
shutil.copy("example.txt", "backup/example_copy.txt")
example.txtという元のファイルを、backupというフォルダの中にexample_copy.txtという名前でコピーしています。
コピーの対象は「ファイル」です。「フォルダごとコピーしたい」場合は、次のようにcopytreeを使います:
shutil.copytree("images", "backup/images_copy")
注意点:コピー先のフォルダがすでに存在するとエラーになります。事前に削除するか、別名にしておきましょう。
3. ファイルを移動する方法(move)
次はファイルを移動する方法です。移動とは、元の場所から別の場所にファイルを引っ越しさせるイメージです。
shutil.move("example.txt", "moved/example.txt")
example.txtをmovedフォルダの中に移動させます。この操作をすると、元の場所からはexample.txtが消えます。
パソコンで「カット&ペースト」するようなイメージですね。
4. ファイルやフォルダを削除する方法(osやshutil)
削除には注意が必要です。一度削除すると、元に戻すのが大変です。
ファイルを削除するにはos.remove()を、フォルダを削除するにはshutil.rmtree()を使います。
import os
import shutil
# ファイルを削除
os.remove("moved/example.txt")
# フォルダごと削除
shutil.rmtree("backup")
ファイルだけならos.remove()でOKですが、フォルダの中には複数のファイルがあるため、shutil.rmtree()で丸ごと削除します。
5. ファイル操作前に存在チェックをしよう
いきなり削除やコピーを行うと、ファイルが存在しなかったり、エラーになることがあります。そんなときは、os.path.exists()で確認してから操作しましょう。
import os
if os.path.exists("example.txt"):
print("ファイルがあります")
else:
print("ファイルが見つかりません")
6. shutilを使った簡単なファイル整理プログラム例
それでは、ここまで学んだことを使って、ファイル整理を自動化するサンプルを見てみましょう。
指定されたフォルダにあるすべての画像ファイル(.jpg)を、imagesというフォルダにまとめて移動します。
import os
import shutil
source_folder = "downloads"
target_folder = "images"
# フォルダがなければ作成
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 拡張子が.jpgのファイルを移動
for filename in os.listdir(source_folder):
if filename.endswith(".jpg"):
shutil.move(
os.path.join(source_folder, filename),
os.path.join(target_folder, filename)
)
このようにPythonとshutilを使えば、毎回マウスで操作しなくても、決まった作業を自動で行うことができます。
7. よくあるエラーと対処法
- PermissionError: ファイルを操作する権限がない場合に出ます。ファイルが開いたままになっていないか確認しましょう。
- FileNotFoundError: コピー元や移動元のファイルが存在しないと出ます。
os.path.exists()で事前にチェックを! - FileExistsError: コピー先に同じ名前のフォルダがすでにあると出ます。フォルダ名を変えるか、削除してから実行しましょう。
8. Pythonでできるその他のファイル操作
shutilだけでなく、Pythonでは他にも便利なファイル処理機能がたくさんあります。
open()でファイルを開く(読み込み・書き込み)os.rename()でファイル名を変更os.makedirs()でフォルダを作成
たとえば、ファイル名を変更するにはこのように書きます:
os.rename("old_name.txt", "new_name.txt")