我有一个使用pathlib
的项目,我想做相当于shutil.rmtree
。
我想过这样做:
def pathlib_rmtree(folder):
if folder.exists():
for file in folder.glob('**/*'):
if file.is_dir():
file.rmdir()
else:
file.unlink()
folder.rmdir()
但我不确定是否保证folder.glob('**/*')
被命令,以便在调用rmdir
之前所有子文件夹都是空的。
所以问题是双重的:
pathlib
目录?glob
是否保证其结果的顺序,以便在它们所属的子文件夹之前返回所有文件?实际上这可以用iterdir
而不是glob
来完成:
def rmtree(root):
for p in root.iterdir():
if p.is_dir():
rmtree(p)
else:
p.unlink()
root.rmdir()