0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】shutilモジュールの活用:ファイルとディレクトリのコピー・削除

0
Posted at

Pythonでファイルやディレクトリのコピー・移動・削除を行うには、shutil モジュールが便利と知り、基本的な使い方を試してみました。

この記事は、学習の記録として shutil の基本的な関数や、関連モジュールとの違いを整理したものです。

shutilとは?

shutil(シェル・ユーティリティ)は、ファイルやディレクトリのコピー・移動・削除などを簡単に行える標準モジュールです。

よく使う操作を1行で書けるため、手間を減らしたいときに便利です。

ファイルをコピーする(copy, copy2)

shutil.copy()

import shutil

# "sample.txt" を "copy.txt" にコピー(中身のみ)
shutil.copy("sample.txt", "copy.txt")

→ ファイルの内容はコピーされますが、作成日・更新日時などの情報(メタ情報)はコピーされません。

shutil.copy2()

import shutil

# メタ情報も含めてコピー
shutil.copy2("sample.txt", "copy2.txt")

copy2() は、copy() と同じようにファイルをコピーしますが、タイムスタンプなどのメタ情報も含めてコピーされます。

ディレクトリをコピーする(copytree)

import shutil

# "src_dir" を "dest_dir" にまるごとコピー
shutil.copytree("src_dir", "dest_dir")

注意点:dest_dir がすでに存在しているとエラーになります。

ファイルやディレクトリを移動する(move)

import shutil

# ファイルやディレクトリを移動(または名前変更)
shutil.move("old_name.txt", "new_name.txt")

ファイルのリネームや、ディレクトリの移動にも使えます。

ディレクトリを削除する(rmtree)

import shutil

# フォルダを中身ごと削除
shutil.rmtree("temp_folder")

os.rmdir() だと中身があると削除できませんが、rmtree()中身ごとまとめて削除してくれます。

shutilとcopyモジュールの違い

Pythonには copy モジュールもありますが、これはPythonオブジェクト(リストや辞書など)をコピーするもので、shutil とは用途がまったく異なります。

モジュール 主な用途 対象
shutil ファイル・フォルダの操作 実在するファイルやディレクトリ shutil.copy("a.txt", "b.txt")
copy オブジェクトのコピー メモリ上のリストや辞書など copy.copy([1, 2, 3])

具体例の比較

# ファイルのコピー(shutil)
import shutil
shutil.copy("test.txt", "backup.txt")
# リストのコピー(copy)
import copy
original = [1, 2, 3]
cloned = copy.copy(original)

copy.copy("test.txt") と書いてもファイルはコピーされません。
文字列オブジェクトを複製するだけです。

shutilとosモジュールの違い

os モジュールもファイルやディレクトリ操作に使えますが、shutilより高レベルの処理(コピー・移動・再帰削除など)に特化しています。

モジュール 主な用途 対象 備考
os 基本操作(作成・削除・確認など) ファイルやディレクトリ 手続きが細かいこともある
shutil 高レベルな操作(コピー・移動など) ファイルやディレクトリ まとめて処理できて簡単

比較例

# ディレクトリ作成(os)
import os
os.mkdir("new_folder")
# ファイルコピー(shutil)
import shutil
shutil.copy("a.txt", "b.txt")
# ディレクトリごと削除(shutil)
shutil.rmtree("folder_to_delete")

ファイルの存在確認・作成などの細かい操作は os、コピーや移動は shutil を使うと覚えておくと良さそうです。

おわりに

shutil を使うと、ファイルやフォルダのコピー・削除・移動がとても簡単にできることが分かりました。

また、copyos との違いを知っておくことで、状況に応じて正しいモジュールを使い分けることができそうです。

今後はこれらを活用して、バックアップスクリプトなどにもチャレンジしてみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?