Pythonでファイルをコピー・移動・削除する方法!shutilモジュール入門
生徒
「Pythonで作ったファイルを別の場所にコピーしたり、移動したり、削除したりすることはできますか?」
先生
「はい、Pythonではshutilモジュールを使うと簡単にファイルのコピーや移動、削除ができます。」
生徒
「shutilモジュールって聞いたことがありません。何ですか?」
先生
「shutilは、Pythonでファイルやフォルダをまとめて操作するための便利なモジュールです。コピーや移動、削除などを簡単に行えます。」
生徒
「具体的な使い方を見せてください!」
先生
「それでは基本から順番に解説します。」
1. shutilモジュールでファイルをコピーする方法
ファイルをコピーするには、shutil.copy()やshutil.copy2()を使います。copy2()はコピー時にファイルの作成日時などの情報も保持します。
import shutil
# ファイルをコピー
shutil.copy("example.txt", "copy_example.txt")
print("example.txtをcopy_example.txtにコピーしました。")
この例では、カレントディレクトリにあるexample.txtというファイルをcopy_example.txtという名前でコピーしています。
2. ファイルを別のフォルダにコピーする方法
コピー先が別のフォルダの場合も簡単です。コピー先のフォルダパスを指定します。
# ファイルをフォルダにコピー
shutil.copy("example.txt", "backup_folder/example.txt")
print("example.txtをbackup_folderにコピーしました。")
事前にコピー先のフォルダが存在するか確認しておくと安全です。
3. ファイルを移動する方法
ファイルの移動や名前の変更には、shutil.move()を使います。
# ファイルの移動
shutil.move("example.txt", "backup_folder/example.txt")
print("example.txtをbackup_folderに移動しました。")
移動はコピーと削除を同時に行う操作と考えるとわかりやすいです。元の場所からファイルがなくなり、新しい場所にファイルが移動します。
4. ファイルを削除する方法
ファイルを削除するにはos.remove()やpathlib.Path.unlink()を使います。shutilでフォルダごと削除する場合はshutil.rmtree()を使います。
import os
from pathlib import Path
# ファイルを削除
os.remove("copy_example.txt")
print("copy_example.txtを削除しました。")
# pathlibを使った場合
file_path = Path("backup_folder/example.txt")
file_path.unlink()
print("backup_folder/example.txtを削除しました。")
フォルダごと削除したい場合はshutil.rmtree("フォルダ名")を使います。中身が入っているフォルダも一括で削除できます。
# フォルダごと削除
shutil.rmtree("backup_folder")
print("backup_folderを削除しました。")
5. shutilを使う際の注意点
- コピー先のフォルダが存在しない場合はエラーになるので、事前に作成しておくか
os.makedirs()を使います。 - 移動や削除を行うと元に戻せない場合があるので注意してください。
- ファイルの上書きを確認したい場合は、
os.path.exists()で存在確認をしてから操作すると安全です。
import os
if os.path.exists("backup_folder/example.txt"):
print("既にファイルが存在します。")
else:
shutil.copy("example.txt", "backup_folder/example.txt")
6. まとめて使った実践サンプル
最後に、ファイルをコピーして移動し、削除する操作をまとめたサンプルです。
import shutil
from pathlib import Path
import os
# コピー先フォルダを作成
Path("backup_folder").mkdir(exist_ok=True)
# ファイルをコピー
shutil.copy("example.txt", "backup_folder/example.txt")
# ファイルを移動(名前変更も可能)
shutil.move("backup_folder/example.txt", "backup_folder/moved_example.txt")
# ファイルを削除
os.remove("backup_folder/moved_example.txt")
# フォルダ削除
shutil.rmtree("backup_folder")
print("ファイル操作の処理が完了しました。")
これでPythonを使ったファイル操作の基本は理解できます。