【実例多数】Pythonでファイルを削除するメソッド・方法を全て紹介

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年6月)

✔以下のような疑問をお持ちの方に向けて書いています

「Pythonでファイルを削除する方法が知りたい」

「Pythonでのファイル削除の実装方法を学びたい」

「Pythonを使ったファイル削除の実例を見たい」

✔この記事で解説する内容

  • Pythonでファイル削除を行う基本概念
  • 具体的なPythonコードによるファイル削除方法
  • 実践的なPythonファイル削除の使用例

当記事では、Pythonを使用したファイル削除の基本概念から実践的な使用例まで、わかりやすく解説していきます。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Pythonでのファイル削除を理解するための前提知識

こちらでは、Pythonでのファイル操作、特にファイル削除についてお伝えしていきます。

Pythonを用いたファイル削除の基本的な考え方を理解することは、データ処理や自動化タスクなど、さまざまな場面で役立つでしょう。

具体的には、以下のトピックについて詳しく解説していきます。

  • Pythonでのファイル操作の重要性
  • ファイル削除の基本的な考え方

Pythonでのファイル操作の重要性

Pythonは、その簡潔な文法と豊富なライブラリにより、ファイル操作のためのプログラミング言語として非常に人気があります。

Pythonを使えば、さまざまな操作の自動化が可能です。

  • テキストファイル・CSVの読み書き
  • 画像・音声の移動や削除
  • バイナリファイルの操作

これらの操作は、データ解析、ウェブスクレイピング、システム管理など、広範な領域で利用されます。

ファイル削除の基本的な考え方

ファイルを削除することは、管理上、とても大切だとされています。

その理由は以下のとおり。

  • ディスクスペースの管理
  • データの整理
  • セキュリティの向上

しかし一度削除したファイルは通常、元に戻すことができません。

むやみやたらにファイルを削除するのも危険といえるでしょう。

事前確認やエラーハンドリングも重要な要素となります。

ファイルの削除:os.remove()

Pythonでファイル削除を行う基本的な方法について解説します。

osモジュールとその中のos.remove()関数に焦点を当て、具体的な使い方とスクリプトを見ていきましょう。

  • osモジュールについて
  • os.remove()関数の使い方
  • 実践:ファイル削除のスクリプト作成

osモジュールについて

Pythonのosモジュールは、操作システムと対話するための便利な関数群を提供します。

以下は、Pythonのosモジュールの主要なメソッドとその説明、および例を示した一覧表です。

メソッド名説明
os.name実行中のプラットフォームの名前を返します。print(os.name)
os.getcwd()現在の作業ディレクトリのパスを返します。print(os.getcwd())
os.chdir(path)作業ディレクトリを指定されたパスに変更します。os.chdir('/path/to/directory')
os.listdir(path)指定されたディレクトリ内のファイルとディレクトリのリストを返します。print(os.listdir('/path/to/directory'))
os.mkdir(path)指定されたパスに新しいディレクトリを作成します。os.mkdir('/path/to/directory')
os.makedirs(path)指定されたパスに新しいディレクトリを再帰的に作成します。os.makedirs('/path/to/directory')
os.remove(path)指定されたパスのファイルを削除します。os.remove('/path/to/file.txt')
os.rmdir(path)指定されたディレクトリを削除します。ディレクトリが空でない場合はエラーが発生します。os.rmdir('/path/to/directory')
os.removedirs(path)指定されたディレクトリとそのサブディレクトリを再帰的に削除します。os.removedirs('/path/to/directory')
os.rename(src, dst)ファイルまたはディレクトリの名前を変更します。os.rename('/path/to/old_name.txt', '/path/to/new_name.txt')
os.stat(path)指定されたパスのファイルまたはディレクトリに関する情報を返します。print(os.stat('/path/to/file.txt'))
os.path.exists(path)指定されたパスが存在するかどうかをチェックします。print(os.path.exists('/path/to/file.txt'))
os.path.isfile(path)指定されたパスがファイルかどうかをチェックします。print(os.path.isfile('/path/to/file.txt'))
os.path.isdir(path)指定されたパスがディレクトリかどうかをチェックします。print(os.path.isdir('/path/to/directory'))
os.path.join(path1, path2)パス要素を連結して新しいパスを作成します。new_path = os.path.join('/path/to', 'file.txt')

osモジュールはPythonの標準ライブラリに含まれているため、追加のインストールは必要ありません。

os.remove()関数の使い方

osモジュールのos.remove()関数は、指定されたパスのファイルを削除するための関数です。

使用方法は非常にシンプルで、引数に削除したいファイルのパスを渡すだけ。

import os

# 削除するファイルのパス
file_path = "/path/to/your/file.txt"

# ファイルの削除
os.remove(file_path)

上記のスクリプトを実行すると、指定したパスのファイルが削除されます。

ただし指定したパスにファイルが存在しない場合、またはファイルが開かれていてアクセスできない場合はエラーとなるので注意しましょう。

実践:ファイル削除のスクリプト作成

それでは、Pythonでファイルを削除する簡単なスクリプトを作成してみましょう。

このスクリプトでは、ユーザーから入力を受け取り、その入力をパスとしてファイルを削除します。

import os

# ユーザーからの入力を受け取る
file_path = input("Enter the path of the file to delete: ")

# ファイルが存在することを確認
if os.path.isfile(file_path):
    # ファイルを削除
    os.remove(file_path)
    print(f"The file {file_path} has been deleted.")
else:
    print("File not found. Please enter a valid file path.")

ディレクトリの削除:os.rmdir()とos.removedirs()

ファイルを削除することに加えて、Pythonではディレクトリの削除も可能です。

osモジュールのos.rmdir()関数とos.removedirs()関数を中心に、ディレクトリ削除の方法を解説します。

  • os.rmdir()関数の使い方
  • os.removedirs()関数の使い方
  • 実践:空のディレクトリ削除のスクリプト作成

os.rmdir()関数の使い方

os.rmdir()関数は、指定されたパスのディレクトリを削除するための関数です。

使用方法はos.remove()関数と非常に似ており、削除したいディレクトリのパスを引数に渡します。

import os

# 削除するディレクトリのパス
dir_path = "/path/to/your/directory"

# ディレクトリの削除
os.rmdir(dir_path)

os.rmdir()関数は、空のディレクトリのみ削除できます。

ディレクトリ内にファイルや他のディレクトリが存在すると、エラーになるので注意しましょう。

os.removedirs()関数の使い方

os.removedirs()関数は、再帰的にディレクトリを削除します。

指定したパスのディレクトリだけでなく、その親ディレクトリも削除しようとします。

ただし、削除を試みる各ディレクトリが空であることが要件です。

import os

# 削除するディレクトリのパス
dir_path = "/path/to/your/directory"

# ディレクトリの削除
os.removedirs(dir_path)

この関数は、空のディレクトリ階層をすべて削除する場合に便利です。

実践:空のディレクトリ削除のスクリプト作成

ディレクトリのパスをユーザーから取得し、そのディレクトリを削除するスクリプトを作成しましょう。

import os

# ユーザーからの入力を受け取る
dir_path = input("Enter the path of the directory to delete: ")

# ディレクトリが存在し、かつ空であることを確認
if os.path.isdir(dir_path) and not os.listdir(dir_path):
    # ディレクトリを削除
    os.rmdir(dir_path)
    print(f"The directory {dir_path} has been deleted.")
else:
    print("Directory not found or the directory is not empty.")

このスクリプトでは、指定されたパスがディレクトリであるかどうかを確認し、そのディレクトリが空であるかをos.listdir()関数で確認します。

ディレクトリが存在し、かつ空であれば、そのディレクトリはos.rmdir()関数によって削除されます。

このスクリプトはディレクトリが空である場合にのみ動作します。

ディレクトリ内にファイルや他のディレクトリがある場合、そのディレクトリは削除されません。

強制的に削除したいなら、os.removedirs()関数を使うか、またはshutil.rmtree()関数を使ってディレクトリとその内容を完全に削除しましょう。

ただし、削除されたファイルやディレクトリは元に戻すことができないので、慎重に実行してください。

ディレクトリ内のすべての要素を削除:shutil.rmtree()

Pythonの標準ライブラリの一つであるshutilモジュールをご説明します。

shutilモジュールを使えば、ディレクトリとその中身全てを削除可能です。

  • shutilモジュールについて
  • shutil.rmtree()関数の使い方
  • 実践:中身ともにディレクトリ削除のスクリプト作成

shutilモジュールについて

shutilモジュールはPythonの標準ライブラリの一部で、高レベルのファイル操作を提供します。

以下はそのメソッドの一覧です。

メソッド名説明
shutil.copy(src, dst)ファイルをコピーshutil.copy('/path/to/source.txt', '/path/to/destination.txt')
shutil.copy2(src, dst)ファイルをコピーしますが、メタデータも保持shutil.copy2('/path/to/source.txt', '/path/to/destination.txt')
shutil.copytree(src, dst)ディレクトリとその中のファイルを再帰的にコピーshutil.copytree('/path/to/source_dir', '/path/to/destination_dir')
shutil.move(src, dst)ファイルまたはディレクトリを別の場所に移動shutil.move('/path/to/source.txt', '/path/to/destination.txt')
shutil.rmtree(path)ディレクトリとその中のファイルを再帰的に削除shutil.rmtree('/path/to/directory')
shutil.make_archive(base_name, format, root_dir)アーカイブファイルを作成shutil.make_archive('/path/to/archive', 'zip', '/path/to/source_dir')
shutil.unpack_archive(filename, extract_dir)アーカイブファイルを解凍shutil.unpack_archive('/path/to/archive.zip', '/path/to/destination_dir')
shutil.disk_usage(path)指定されたパスのディスク使用状況を返すprint(shutil.disk_usage('/path/to/directory'))
shutil.which(cmd)コマンドの実行可能ファイルのパスを返すprint(shutil.which('python'))

この表で、全てのメソッドが網羅されているわけではありません。

詳細な情報や他の利用可能なメソッドについては、公式のPythonドキュメントを参照してください。

shutil.rmtree()関数の使い方

shutil.rmtree()関数は、引数としてディレクトリのパスを取ります。

指定されたディレクトリとその中にある全てのファイルとサブディレクトリを削除できるメソッドです。

基本的な使い方は次のようになります。

import shutil

shutil.rmtree('/path/to/directory')

上記のコードでは、指定されたパスのディレクトリとその中身全てが削除されます。

指定したディレクトリが存在しない場合、FileNotFoundErrorが発生します。

注意: shutil.rmtree()は非常に強力な関数で、誤って重要なファイルやディレクトリを削除しないように注意が必要です。

使用する前に、削除するディレクトリの中身を確認することをおすすめします。

実践:中身ともにディレクトリ削除のスクリプト作成

shutil.rmtree()関数を使って、ディレクトリとその中身全てを削除するPythonスクリプトを作成してみましょう。

以下のコードで、/path/to/directoryというパスのディレクトリとその中身全てを削除。

また存在しないディレクトリを削除しようとした場合、FileNotFoundErrorをキャッチする例外処理を実装しています。

import shutil

try:
    shutil.rmtree('/path/to/directory')
except FileNotFoundError:
    print("フォルダが見つかりません。")

上記のスクリプトを実行すると、指定したディレクトリが存在する場合はそのディレクトリと中身が全て削除されます。

指定したディレクトリが存在しない場合は、メッセージが表示されます。

注意: ディレクトリの削除は取り返しのつかない操作なので、shutil.rmtree()を使う前には必ず削除対象のディレクトリを確認し、重要なデータが含まれていないことを確認してください。

ディレクトリ内の複数のファイルを一括で削除

こちらでは、Pythonを使ってディレクトリ内の複数のファイルを一括で削除する方法について解説します。

この技術は、特定のパターンに一致するファイルを一括で削除する場合などに非常に有用です。

  • ワイルドカードを使った条件指定の方法
  • 正規表現を使った条件指定の方法
  • 実践:条件に合ったファイルの一括削除スクリプト作成

ワイルドカードを使った条件指定の方法

Pythonのglobモジュールを使うと、ワイルドカード(*や?など)を用いて特定のパターンに一致するファイルを探せます。

その結果を、os.remove()関数に渡して一括削除をおこないましょう。

特定の拡張子を持つファイル(例えば、”.txt”ファイル)を一括で削除する例です。

import os
import glob

files = glob.glob('/path/to/directory/*.txt')
for file in files:
    try:
        os.remove(file)
    except FileNotFoundError:
        print(f"{file} does not exist.")

このスクリプトでは、指定したディレクトリ内の全ての”.txt”ファイルを一括で削除。

そして、既に存在しないファイルを削除しようとした際のFileNotFoundErrorを適切に処理します。

正規表現を使った条件指定の方法

Pythonのreモジュールを使うと、正規表現を用いて特定のパターンに一致するファイルを探せます。

その結果を、os.remove()関数に渡して一括削除。

こちらが特定のパターン(先頭に”temp”という文字列を持つファイル)を一括で削除する例です。

import os
import re

# Get the list of all files
files = os.listdir('/path/to/directory')

# Compile the pattern
pattern = re.compile(r'^temp.*')

# Filter files based on the pattern
files_to_remove = [file for file in files if pattern.match(file)]

# Remove the files
for file in files_to_remove:
    try:
        os.remove(os.path.join('/path/to/directory', file))
    except FileNotFoundError:
        print(f"{file} does not exist.")

実践:条件に合ったファイルの一括削除スクリプト作成

これまで説明した手法を組み合わせて、特定の条件に合った複数のファイルを一括で削除するPythonスクリプトを作成してみましょう。

以下のスクリプトは、”.txt”の拡張子を持つか、またはファイル名が”temp”で始まるファイルを一括で削除します。

import os
import glob
import re

# Use glob to get all .txt files
txt_files = glob.glob('/path/to/directory/*.txt')

# Use re to get all files starting with 'temp'
all_files = os.listdir('/path/to/directory')
temp_files = [file for file in all_files if re.match(r'^temp.*', file)]

# Concatenate the lists
files_to_remove = txt_files + temp_files

# Remove the files
for file in files_to_remove:
    try:
        os.remove(file)
    except FileNotFoundError:
        print(f"{file} does not exist.")

このスクリプトは2つの異なるパターンを組み合わせて、一括削除の対象とするファイルのリストを作成します。

より複雑な条件でファイルを選択することも可能なのです。

エラー処理:ファイル削除に関する一般的なエラーとその対処法

ここでは、Pythonでファイルやディレクトリの削除を行う際によく遭遇するエラーと、それらの適切な対処法についてお伝えします。

  • ファイルが存在しない場合の対処法:FileNotFoundError
  • ディレクトリが空でない場合の対処法:OSError
  • アクセス権限がない場合の対処法:PermissionError

ファイルが存在しない場合の対処法:FileNotFoundError

指定したファイルを削除しようと試みると、PythonはFileNotFoundErrorを投げます。

このエラーは、指定されたパスにファイルが存在しないときに発生するものです。

このエラーを避けるための最も簡単な方法は、削除を試みる前にファイルが存在することを確認することです。

これはos.pathモジュールのos.path.exists()関数を使用して行うことができます。

import os

file_path = '/path/to/file.txt'
if os.path.exists(file_path):
    os.remove(file_path)
else:
    print(f"The file {file_path} does not exist.")

ディレクトリが空でない場合の対処法:OSError

空でないディレクトリを削除しようとすると、PythonはOSErrorを投げます。

ディレクトリが空でないために削除できないからです。

空でないディレクトリを削除するためには、そのディレクトリ内の全てのファイルとサブディレクトリを削除する必要があります。

これはshutil.rmtree()関数を使用して簡単に実装できます。

import shutil

directory_path = '/path/to/directory'
shutil.rmtree(directory_path)

アクセス権限がない場合の対処法:PermissionError

Pythonでファイルやディレクトリの削除を試みる際、適切なアクセス権限がないと、PythonはPermissionErrorを投げます。

このエラーは、現在のユーザーがファイルやディレクトリに対する必要なアクセス権限を持っていないときに発生するもの。

このエラーを解決するためには、該当のファイルまたはディレクトリのアクセス権限を確認し、必要な権限を付与する必要があります。

Unix系のシステムでは、この操作は通常、chmodコマンドを用いておこないます。

【実例付】chmodコマンドの使い方とオプション一覧を徹底解説
chmod コマンドについて、詳しく知りたいですか?このコマンドは、LinuxやUnixシステムでファイルやディレクトリのアクセス権限を変更するために使用されます。当記事では、chmod コマンドの基本的な使い方から、さまざまなオプションやフラグの説明まで、詳しく解説していきます。初心者の方は必見です。

もしくは、スクリプトの実行ユーザー自身が適切なアクセス権を持っていることを確認します。

まとめ

当記事では、Pythonでのファイルとディレクトリの削除方法について学習してきました。

  • Pythonではosモジュールのos.remove()os.rmdir()os.removedirs()関数を使用して、ファイルやディレクトリを削除できる
  • shutilモジュールのshutil.rmtree()関数を用いると、ディレクトリとその中身全てを一度に削除可能
  • ファイルやディレクトリを操作する際は、FileNotFoundErrorOSErrorPermissionErrorなどのエラーに対処する方法も重要

当記事で学んだ知識を活用して、日々のプログラミング作業をより効率的に行うことができるようになることでしょう。

また、Pythonには他にもさまざまなモジュールと関数があります。

これらをうまく組み合わせることで、さまざまなタスクを効率的に自動化することが可能です。

ぜひ当サイトのさまざまな記事で、いろいろな関数についての知識を深めましょう。

タイトルとURLをコピーしました