Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでファイルを削除する方法:os.remove・os.rmdir・shutil.rmtree徹底解説

Pythonを使えば、コンピュータ上のファイルやフォルダを簡単に削除できます。単一のファイルを削除するには os.remove()、空のディレクトリを削除するには os.rmdir()、中身が入ったディレクトリごと削除するには shutil.rmtree() を使用します。


はじめに:なぜファイル削除が必要なのか

開発者はPythonプログラムの中で、さまざまな目的でファイルを扱います。ファイル操作において、最も重要な機能のひとつが「ファイルの削除」です。

たとえば、S&P 500指数のパフォーマンスを分析し、その結果をファイルに保存するプログラムを作成しているとしましょう。新しい分析結果を保存する前に、古い分析ファイルを削除してスペースを確保したい場合があります。

この記事では、以下の3つのメソッドを使ったファイル・フォルダの削除方法を、具体例とともにわかりやすく解説します。

  • os.remove():単一のファイルを削除する
  • os.rmdir():空のディレクトリ(フォルダ)を削除する
  • shutil.rmtree():中身の入ったディレクトリを丸ごと削除する

1. os.remove()でファイルを削除する

os.remove() メソッドは、オペレーティングシステム上からファイルを1つだけ削除します。ディレクトリの削除には使用できない点に注意してください。

os モジュールは、コンピュータのOSやファイルシステムとやり取りするための標準ライブラリです。os.remove() はその中に含まれるメソッドで、個別のファイルを削除するために使われます。

osモジュールのインポート

これらのメソッドを使う前に、まず import 文で os ライブラリを読み込む必要があります。

import os

os.remove()の基本構文

import os

os.remove(ファイルのパス)

os.remove() は引数を1つだけ受け取ります。それは「削除したいファイルの場所(パス)」です。

実例:分析ファイルの削除

ここでは、数学クラスの生徒の成績を1年間かけて分析するプログラムを作成するとします。分析データを保存するために /home/school/math/final_analysis.csv というファイルを作りたいのですが、プログラムが新規ファイルを作成する前に、同名のファイルがすでに存在しないことを確認する必要があります。

次のコードで、既存のファイルを削除できます。

import os

path = "/home/school/math/final_analysis.csv"

os.remove(path)

print("final_analysis.csv has been deleted.")

このコードを実行すると、コンソールに次のメッセージが出力されます。

final_analysis.csv has been deleted.

コードの流れを見てみましょう。

  1. 1行目で os モジュールをインポートします。これにより os.remove() メソッドが使えるようになります。
  2. 次に、path という変数を定義し、削除したいファイルのパスを格納します。
  3. 最後に os.remove() を呼び出し、引数として path 変数を指定することで、ファイルが削除されます。

2. os.rmdir()で空のディレクトリを削除する

os.remove() はフォルダを削除できません。代わりに os.rmdir() メソッドを使用します。このメソッドは、空のファイルまたはディレクトリを削除するためのものです。

os.rmdir()の基本構文

import os

os.rmdir(フォルダのパス)

os.rmdir() も引数を1つだけ受け取ります。削除対象のパスです。

実例:処理済みデータフォルダの削除

先ほどの成績分析プログラムで、処理済みのデータを /home/school/math/final フォルダに保存することにしたとします。プログラムを実行するたびに、新しいデータを格納したフォルダを作り直したいので、実行前に古い final フォルダを削除したいわけです。

次のコードでフォルダを削除できます。

import os

path = "/home/school/math/final"

os.rmdir(path)

print("/home/school/math/final has been deleted.")

このコードは /home/school/math/final ディレクトリを削除し、コンソールに次のメッセージを出力します。

/home/school/math/final has been deleted.

注意: os.rmdir()空のディレクトリしか削除できません。ファイルが含まれるフォルダを指定すると、次のようなエラーが返されます。

[Errno 13] Permission denied: '/home/school/math/final' Directory 'final' can not be removed

3. try exceptによるエラー処理

これまでの例で見たように、状況によってはエラーが発生することがあります。

  • os.remove() をディレクトリに対して使うとエラーになる
  • os.rmdir() をファイル入りのディレクトリに対して使うとエラーになる

実際のプログラムでは、エラーが発生したときに適切に処理できる仕組みがあると安心です。そこで活躍するのが try except ブロックです。

先ほどの os.rmdir() の例に、例外発生時に定義済みのメッセージを出力するエラー処理を追加してみましょう。

import os

path = "/home/school/math/final"

try:
    os.rmdir(path)
    print("/home/school/math/final has been deleted.")
except OSError as error:
    print("There was an error.")

エラーが発生せずにコードが実行されれば、ディレクトリは削除され、次のメッセージが表示されます。

/home/school/math/final has been deleted.

一方、ファイルが入ったディレクトリを削除しようとすると、次のメッセージが表示されます。

There was an error.

コードの仕組みを簡単に説明します。try except ブロックでは、まず try ブロック内のコードが実行されます。エラーが発生した場合のみ、except ブロック内のコードが実行されます。この例では、OSError が発生したときに限り except ブロックが動作します。

4. shutil.rmtree()で中身ごとディレクトリを削除する

shutil ライブラリには、ファイルが含まれたディレクトリを丸ごと削除できる shutil.rmtree() メソッドが用意されています。

shutil ライブラリは、ファイル操作に関する多数の関数を提供しています。ここで注目するのは、ディレクトリツリー全体を削除する shutil.rmtree() です。

shutil.rmtree()の基本構文

import shutil

shutil.rmtree(フォルダのパス)

コード内で shutil モジュールをインポートしている点に注目してください。os.remove() と同様に、shutil.rmtree() も外部ライブラリの一部なので、使用前にインポートが必要です。

実例:ファイル入りのフォルダを削除する

成績分析プログラムで final ディレクトリを削除する必要があるものの、そのディレクトリにはすでに処理済みデータのファイルが含まれているとします。ディレクトリとその中身をすべて削除するには、次のコードを使います。

import shutil

path = "/home/school/math/final"

shutil.rmtree(path)

print("/home/school/math/final has been removed.")

このコードは final フォルダとその内容をすべて削除し、コンソールに次のメッセージを出力します。

/home/school/math/final has been removed.

まとめ:用途別の使い分け早見表

ファイルの削除はPythonにおける一般的な操作です。最後に、3つのメソッドの使い分けを整理しておきましょう。

メソッド用途所属モジュール
os.remove()特定のファイルを1つ削除os
os.rmdir()空のディレクトリを削除os
shutil.rmtree()ファイル入りのディレクトリを丸ごと削除shutil

誤って重要なファイルを消さないよう、try except によるエラー処理を組み合わせることで、より安全で堅牢なプログラムになります。ぜひ実際のコードで試してみてください。

  1. Pythonインタープリターとは?仕組みと初心者向けオンライン環境を徹底解説

    Pythonは学びやすいプログラミング言語として知られています。その理由のひとつが、自分のマシンに正しいバージョンのPythonをインストールしなくても、オンラインで利用できるPythonインタープリターが数多く存在する点です。本記事では、Pythonインタープリターの仕組みについて解説し、初心者にも使いやすい人気のオンラインインタープリターをご紹介します。 Pythonプログラムはどのように実行されるのか? PythonはJavaと同様に、純粋なインタプリタ言語ともコンパイラ言語とも分類できず、両方の性質を併せ持っています。 ここでいう「コンパイル」とは、特定のプラットフォームに依存し

  2. Pythonでファイルを削除する方法をわかりやすく解説

    Pythonでファイルを削除する基本の方法 Pythonでは、標準ライブラリのosモジュールを使うことで、単一のファイルや空のフォルダ(ディレクトリ)を簡単に削除できます。外部ライブラリのインストールは不要で、import osと記述するだけですぐに利用できるのが魅力です。 os.remove() でファイルを削除する たとえば、カレントディレクトリにある my_file.txt というファイルを削除したい場合は、次のように記述します。 >>> import os >>> os.remove(my_file.txt) os.remove() の引数には、削