小学理科718021 views
中学社会667518 views
LaTeX958597 views
いろは2995081 views
世界の国561710 views
高校国語786382 views
中学理科1627838 views
Computer366119 views
高校化学2916128 views
高校倫理1435514 views

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 を指定すると、既存ディレクトリにマージできる。