如何使用 pathlib 删除目录树?
How do I delete a directory tree with pathlib?
我有一个使用 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()
我有一个使用 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()