Python を使ってファイルやディレクトリを削除する方法

Suraj Joshi 2023年1月30日
  1. Python の os モジュールを使ってファイルを削除する
  2. Python の pathlib モジュールを用いたファイルの削除
  3. Python でパターンマッチングを利用してファイルを削除する
  4. Python の os モジュールを用いたディレクトリの削除
  5. Python の pathlib モジュールを用いたディレクトリの削除
  6. Python の shutil.rmtree メソッドを使って空でないディレクトリを削除する
Python を使ってファイルやディレクトリを削除する方法

この記事では、ospathlibshutil といった Python の組み込みパッケージを使ってファイルやディレクトリを削除する方法を紹介します。

Python の os モジュールを使ってファイルを削除する

os は Python 2 と Python 3 の両方で利用可能な組み込みパッケージです。

Python を使ってファイルを削除するには、os モジュールの remove()unlink() を使用することができます。これらの関数はどちらも動作は似ています。どちらも削除するファイルのパスを引数にとります。

import os

os.remove("test_dir/main.py")

この関数は test_dir の中にある main.py という名前のファイルを削除します。ここでは相対パスを使っているので、test_dir は Python プログラムと同じルートフォルダになければなりません。絶対パスを使用することもできます。

import os

os.unlink("test_dir/main.py")

この関数は test_dir の中にある main.py というファイルも削除します。

どちらの関数も削除できるのはファイルのみです。削除するディレクトリのパスを指定すると IsADirectoryError エラーが発生します。

同様に、指定したパスにファイルが存在しない場合は FileNotFoundError を取得します。

ファイルを削除する権限がない場合は PermissionError エラーが発生します。

ファイルの削除中にこれらのエラーに対処するには、例外処理を利用する必要があります。

import os

try:
    os.remove("test_dir/main.py")
except OSError as e:
    print(f"Error:{ e.strerror}")

出力:

Error:No such file or directory

そのようなファイルがない場合、プログラム全体がクラッシュするのではなく、出力にエラーが表示されます。

Python の pathlib モジュールを用いたファイルの削除

pathlib モジュールを用いてファイルを削除するには、まず pathlib モジュールで定義された Path オブジェクトを作成します。次に unlink() メソッドを用いてファイルを削除します。

from pathlib import Path

filePath = Path("test_dir/main.py")

try:
    filePath.unlink()
except OSError as e:
    print(f"Error:{ e.strerror}")

ここでは、Path クラスから filePath オブジェクトのインスタンスを作成し、削除するファイルの場所を指定します。

pathlib モジュールは Python 3.4 以上でのみ利用可能です。Python 2 では、pip を使ってモジュールをインストールする必要があります。

Python でパターンマッチングを利用してファイルを削除する

glob モジュールを用いてファイル内のパターンをマッチさせ、パターンにマッチするファイルを集めた後で、上記のいずれかの方法でそれらのファイルをすべて削除することができます。

import os
import glob

py_files = glob.glob("test_dir/*.py")

for py_file in py_files:
    try:
        os.remove(py_file)
    except OSError as e:
        print(f"Error:{ e.strerror}")

これは、test_dir ディレクトリ内の拡張子 .py のファイルをすべて削除することを意味します。

Python の os モジュールを用いたディレクトリの削除

Python を使ってディレクトリをデリートするには、ospathlibshutlib ディレクトリを使用することができます。ospathlib は空のディレクトリのみを削除することができ、shutlib は空でないディレクトリも削除することができます。

import os

dirPath = "test_dir"

try:
    os.rmdir(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

これは、現在の作業ディレクトリの中の空のディレクトリ test_dir を削除します。

Python の pathlib モジュールを用いたディレクトリの削除

ディレクトリが空でない場合、このメソッドを使ってディレクトリを削除できない場合、プログラムから Error: Directory not empty という出力が表示されます。

空でないディレクトリを削除するには、pathlib モジュールを使用することもできます。

from pathlib import Path

dirPath = Path("test_dir")

try:
    dirPath.rmdir()
except OSError as e:
    print(f"Error:{ e.strerror}")

また、現在の作業ディレクトリにある空のディレクトリ test_dir も削除します。

Python の shutil.rmtree メソッドを使って空でないディレクトリを削除する

Python を使って空でないディレクトリを削除するには、shutil モジュールの rmtree メソッドを使用します。

import shutil

dirPath = "test_dir"

try:
    shutil.rmtree(dirPath)
except OSError as e:
    print(f"Error:{ e.strerror}")

このメソッドは現在の作業ディレクトリにある test_dir ディレクトリとその内容をすべて削除します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Python File

関連記事 - Python Directory