ディレクトリとPathLibモジュールのコンテンツを削除する方法はありますか? path.unlink()
では、ファイルを削除するだけです。path.rmdir()
では、ディレクトリは空でなければなりません。 1回の関数呼び出しでそれを行う方法はありませんか?
既にご存知のように、ファイル/ディレクトリを削除するための2つのPath
メソッドは.unlink()
と.rmdir()
のみであり、どちらも必要なことを行いません。
Pathlibは、異なるOS間でオブジェクト指向のパスを提供するモジュールであり、多種多様なメソッドを持つことを意図したものではありません。
このライブラリの目的は、ファイルシステムのパスとユーザーがそれらに対して行う一般的な操作を処理するクラスの単純な階層を提供することです。
ディレクトリを再帰的に削除するなど、「一般的でない」ファイルシステムの変更は、異なるモジュールに保存されます。ディレクトリを再帰的に削除する場合は、shutil
モジュールを使用する必要があります。 (Path
インスタンスでも動作します!)
import shutil
import pathlib
import os # for checking results
print(os.listdir())
# ["a_directory", "foo.py", ...]
path = pathlib.Path("a_directory")
shutil.rmtree(path)
print(os.listdir())
# ["foo.py", ...]
サードパーティのライブラリを使用しても構わない場合は、 path.py を試してください。そのAPIは _pathlib.Path
_ と似ていますが、ディレクトリツリーを再帰的に削除する Path.rmtree()
などの追加のメソッドを提供します。
それ以外の場合、pathlib
のみが必要な場合はこれを試すことができます。
from pathlib import Path, os
def rm_tree(pth: Path):
for f in os.listdir(pth):
child = pth / f
if child.is_file():
child.unlink()
else:
rm_tree(child)
pth.rmdir()
rm_tree(your_path)