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

2020-09-13Python,Python ファイル操作

Pythonでのファイル・ディレクトリの削除方法

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

ファイルを削除する

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.rmtree()でディレクトリを中身のファイルごと削除可能です。

import shutil

shutil.rmtree('target_dir/')

shutil.rmtree()のメモ

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

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

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

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

2020-09-13Python,Python ファイル操作

Posted by Yousuke.U