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

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

この記事では、os, pathlib, shutil といった 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 を使ってディレクトリをデリートするには、os, pathlib, shutlib ディレクトリを使うことができます。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 ディレクトリとその内容をすべて削除します。

comments powered by Disqus