Python | remove()やrmtree()でファイル・ディレクトリの削除

2023-02-26Python ファイル・ディレクトリ,Python

Python | remove()やrmtree()でファイル・ディレクトリの削除

Pythonで「os」モジュールのos.remove()メソッドや「shutil」モジュールのshutil.rmtree()メソッドを使った基本的なファイル・ディレクトリを削除する方法についての紹介です。

ファイルを削除する

「os」モジュールのos.remove()メソッドを使ってファイルの削除が可能です。

import os

os.remove("target.txt")

os.remove()メソッドのメモ

  • os.remove()はディレクトリの削除はできない
  • 対象のファイルが存在しない場合はエラーが出る

os.remove()メソッドだけだと対象のファイルが存在しない場合にエラーが出るので、os.path.isfile()メソッドでファイルの存在を確認してからファイルの削除をします。

os.path.isfile()メソッドはファイルの存在を確認して存在した場合はTrue、存在しなかった場合はFalseを返します。

import os

if os.path.isfile("target.txt") == True:
	os.remove("target.txt")

または、try文を使って対象のファイルが存在しなかった場合はエラーの例外処理としてエラーとならないように処理することも可能です。

import os

try:
	os.remove("target.txt")
except OSError as err:
	pass

ディレクトリを削除する

「shutil」モジュールのshutil.rmtree()メソッドでディレクトリを中身のファイルごと削除可能です。

import shutil

shutil.rmtree("target_dir/")

shutil.rmtree()のメモ

  • shutil.rmtree()は中身ごと指定のディレクトリを削除する
  • 中身のディレクトリ階層も削除する
  • 対象のディレクトリが存在しない場合はエラーが出る

os.rmtree()メソッドだけだと対象のディレクトリが存在しない場合にエラーが出るので、os.path.isdir()でディレクトリの存在を確認してからファイルの削除をします。

os.path.isdir()メソッドは対象のディレクトリの存在を確認して存在した場合はTrue、存在しなかった場合はFalseを返します。

import os
import shutil

if os.path.isdir("target_dir/") == True:
	shutil.rmtree("target_dir/")

または、try文を使って対象のディレクトリが存在しなかった場合はエラーの例外処理としてエラーとならないように処理することも可能です。

import shutil

try:
	shutil.rmtree("target_dir/")
except OSError as err:
	pass

ディレクトリ内の中身を一括削除する

shutil.rmtree()メソッドでディレクトリとその中身を削除したあとで、os.makedirs()メソッドでディレクトリを作成することでディレクトリを残したまま中身だけを削除した場合と同じ結果となります。

import os
import shutil

if os.path.isfile("target_dir/") == True:
	shutil.rmtree("target_dir/")
	os.makedirs("target_dir/")

os.makedirs()メソッドは存在していた場合、オプション引数に「exist_ok=True」をつけていないとエラーとなります。
Python2.x系では削除したディレクトリとのパスが違っていたり、削除に失敗した時の為にos.makedirs()メソッドに対して存在確認が必要となります。

try文を使ってエラーの例外処理をいれた場合。

import os
import shutil

# ディレクトリを削除
try:
	shutil.rmtree("target_dir/")
except OSError as err:
	pass
# ディレクトリを作成
try:
	os.makedirs("target_dir/")
except OSError as err:
	pass