ファイルの削除・移動・コピーには 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 を指定すると、既存ディレクトリにマージできる。