Pythonのディレクトリ内のすべてのファイルを削除します
ディレクトリ自体を削除せずに、Pythonのディレクトリからすべてのファイルを削除します。
前回の投稿では、 Pythonでファイルを削除する を使用して os.remove()
, os.unlink()
、 と pathlib.Path.unlink()
機能。この投稿では、ディレクトリからすべてのファイルを削除する方法について説明します。
1.使用する os.listdir()
関数
アイデアは、ディレクトリ内のすべてのファイルを反復処理することです。 os.listdir()
関数を実行し、で検出された各ファイルを削除します os.remove()
関数。これにより、ルートディレクトリに存在するすべてのファイルが削除されますが、ディレクトリにサブディレクトリが含まれている場合は例外が発生することに注意してください。
1 2 3 4 5 6 |
import os dir = 'path/to/dir' for f in os.listdir(dir): os.remove(os.path.join(dir, f)) |
2.使用する glob.glob()
関数
を使用して、ディレクトリ内のファイルを反復処理することもできます glob.glob
関数。指定されたパターンに一致するパスに対してイテレータを返します。ただし、ルートディレクトリにサブディレクトリがある場合も、これにより例外が発生します。
1 2 3 4 5 6 7 |
import os, glob dir = 'path/to/dir' filelist = glob.glob(os.path.join(dir, "*")) for f in filelist: os.remove(f) |
3.使用する os.scandir()
関数
Pythonバージョン3.5では、より高速です os.scandir()
関数は、ディレクトリ内のファイルを反復処理するための推奨される方法です。他のすべてのアプローチと同様に、ルートディレクトリにサブディレクトリが含まれている場合、これは失敗します。
1 2 3 4 5 6 |
import os, glob dir = 'path/to/dir' for file in os.scandir(dir): os.remove(file.path) |
4.使用する shutil.rmtree()
関数
ディレクトリからすべてのファイル、サブディレクトリ、およびシンボリックリンクを削除する必要がある場合は、 shutil.rmtree()
で機能する os.remove()
以下に示すように、関数:
1 2 3 4 5 6 7 8 9 10 |
import os, shutil dir = 'path/to/dir' for files in os.listdir(dir): path = os.path.join(dir, files) try: shutil.rmtree(path) except OSError: os.remove(path) |
ディレクトリ全体を削除する必要がある場合は、直接呼び出すことができます shutil.rmtree()
ルートディレクトリの関数:
1 2 3 4 5 |
import shutil dir = 'path/to/dir' shutil.rmtree(dir) |
これで、Pythonのディレクトリ内のすべてのファイルを削除できます。