いろは2986023 views
高校化学2913383 views
高校生物549842 views
教育148875 views
小学理科717236 views
数学講師2852771 views
Computer365120 views
高校日本史189857 views
高校物理158224 views
中学英語808712 views
Help
Tools

English

Python でファイルを削除・移動・コピーする(shutil)

ファイルの削除・移動・コピーには os モジュールと shutil モジュールを使う。

ファイルを削除する

ファイルの削除には os.remove() を使う。

import os

os.remove('data.txt')

存在しないファイルを削除しようとすると FileNotFoundError が発生するため、事前に存在確認をするか例外処理を行う。

import os

path = 'data.txt'
if os.path.exists(path):
    os.remove(path)

ディレクトリを削除する

空のディレクトリは os.rmdir() で削除できる。中身があるディレクトリを丸ごと削除するには shutil.rmtree() を使う。

import os
import shutil

# 空のディレクトリを削除
os.rmdir('empty_dir')

# 中身ごとディレクトリを削除
shutil.rmtree('mydir')

shutil.rmtree() は強力なので、誤って重要なディレクトリを削除しないよう注意が必要だ。

ファイルを移動する

ファイルの移動には shutil.move() を使う。

import shutil

shutil.move('data.txt', 'backup/data.txt')

移動先にファイル名を含めれば名前を変更しながら移動できる。移動先がディレクトリ名だけなら、元のファイル名で移動される。

ファイルをコピーする

ファイルのコピーには shutil.copy() または shutil.copy2() を使う。

import shutil

# メタデータをコピーしない
shutil.copy('data.txt', 'data_backup.txt')

# メタデータ(更新日時など)も含めてコピー
shutil.copy2('data.txt', 'data_backup.txt')

shutil.copy() はファイルの内容とパーミッションをコピーする。shutil.copy2() はそれに加えて更新日時などのメタデータもコピーする。

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

ディレクトリを丸ごとコピーするには shutil.copytree() を使う。

import shutil

shutil.copytree('mydir', 'mydir_backup')

コピー先のディレクトリがすでに存在するとエラーになる。Python 3.8 以降では dirs_exist_ok=True を指定すると、既存ディレクトリにマージできる。