PathLib recursively remove directory?
Here's a pure pathlib implementation:
from pathlib import Path
def rm_tree(pth):
pth = Path(pth)
for child in pth.glob('*'):
if child.is_file():
child.unlink()
else:
rm_tree(child)
pth.rmdir()
As you already know, the only two Path
methods for removing files/directories are .unlink()
and .rmdir()
and neither does what you want.
Pathlib is a module that provides object oriented paths across different OS's, it isn't meant to have lots of diverse methods.
The aim of this library is to provide a simple hierarchy of classes to handle filesystem paths and the common operations users do over them.
The "uncommon" file system alterations, such as recursively removing a directory, is stored in different modules. If you want to recursively remove a directory, you should use the shutil
module. (It works with Path
instances too!)
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", ...]