Pythonでの処理が終わって不要になったファイルを手動で削除してるんだけど、
ファイル削除もPythonで自動化できないかな…?
できますよ!
「ファイルやフォルダを削除する方法」を
できるだけわかりやすく解説いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
Pythonでファイルやフォルダを削除するには
「os」の「remove」もしくは「rmdir」(または「shutil」の「rmtree」)を使います。
まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import os
os.remove('C:/Utatane/input.xlsx')
解説
現在、Cドライブの中に「Utatane」というフォルダがあります。
その中に、「0413Sat」というフォルダと、「input.xlsx」というエクセルファイルがあります。
まずは「input.xlsx」を削除します。
インポート
import os
ファイルやフォルダを削除するには、「os」のインポートが必要です。
まずは上記一文を記述して、「os」をインポートしましょう。
ファイルの削除
os.remove('C:/Utatane/input.xlsx'')
上記一文でファイルを削除することができます。
【 os.remove(‘フォルダパス/削除したいファイル名‘) 】
フォルダパスやファイル名を間違うとエラーが出る場合があります。
また、エラーが出なくても、違うファイルを削除してしまう可能性がありますので、ファイルパスは間違えないようにしましょう。
フォルダの削除
では次に、今日の日付フォルダ「0413Sat」を削除してみましょう。
しかしながら、「remove」ではエラーが出てフォルダを削除することはできません。
「アクセスが拒否されました」とありますが、これは「remove」にフォルダを削除する権限がないからです。
フォルダを削除するには、「rmdir() 」を使用します。
os.rmdir('C:/Utatane/0413Sat')
実行してみます。
フォルダが削除できました。
ただし、削除するフォルダが空っぽではない場合、そのフォルダは削除することができません。
中のファイルを全て消してからフォルダを削除してもよいですが、フォルダが混ざっているとめんどうです。
空っぽでないフォルダを削除する方法は次項で紹介いたします。
「0413Sat」などのように、本日の日付入りフォルダはPythonで自動作成できます。下記記事をご参考ください。
空っぽでないフォルダを削除
ひとまず全コードを網羅します。
import shutil
shutil.rmtree('C:/Utatane/0413Sat')
▼実行見本
▼解説
1行目:「shutil」をインポートします。
3行目:「shutil」の「rmtree」でフォルダを削除します。
※使い方はほぼ「remove」と同じですので、詳細解説は割愛いたします。
ファイル名に日付が入っている場合の対処法
見本で削除した「input.xlsx」ですが、「0413input.xlsx」のように日付が入っていた場合、
通常であれば毎回コードを変える必要があります。
os.remove('C:/Utatane/0413input.xlsx'')
↓
os.remove('C:/Utatane/0414input.xlsx'')
しかしそんなことをすると、せっかく自動化した意味がありません。
コードを変えなくても済む方法を紹介いたしますので、ぜひご活用ください。
▼コード
import os
import glob
files = glob.glob('C:/Utatane/*input*.xlsx')
for file in files :
os.remove(file)
▼解説
globを使って、ファイルパスを部分一致で取得しています。
そのファイルパス(file)をremoveの中に入れています。
空のフォルダを削除する場合は「rmdir」、空でないフォルダを削除する場合は「rmtree」にそれぞれ置き換えてください。
globについては下記記事で解説しております。ご参考ください。
for文については、下記記事をご参考ください。
うまく動作しない時
エラーが出る
指定されたファイルが見つかりません
「指定の場所に指定のファイルが存在しない」というエラーです。
「ファイルパス」もしくは「ファイル名」が間違っている可能性がありますのでチェックしてみてください。
アクセスが拒否されました
「remove」でフォルダを削除しようとした時に出る可能性のあるエラーです。
「remove」ではフォルダを削除する権限がありません。
フォルダを削除する際は、見本のように「rmdir」もしくは「rmtree」を使ってください。
ディレクトリが空ではありません
「rmdir」でフォルダを削除しようとした際に出るエラーです。
「rmdir」は空っぽのフォルダのみ削除することができます。
中身のあるフォルダは見本のように「rmtree」で削除しましょう。
最後に
Pythonでファイルやフォルダを削除する方法を解説いたしました。
今回の見本のように、不要なファイルを削除することで、自動化がワンランクアップしてさらに効率的になります。ぜひご活用ください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!