1. ホーム
  2. python

[解決済み] PathLibは再帰的にディレクトリを削除しますか?

2023-03-13 16:52:22

質問

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", ...]