我看过很多问题(Delete Folder Contents in Python,How to delete a file or folder?,How do I remove/delete a folder that is not empty with Python?)询问如何删除文件夹(空或不)但我还没有看到任何询问如何一次删除大量文件夹。
我尝试使用shutils
并将某些内容写为shutils.rmtree('.../run*')
(我要删除的所有文件夹都称为run0000,run0001等),但这不起作用,因为*不被理解。
我最终导致导入子流程并使用因subprocess.Popen('rm -r ./run*/', shell=True)
而有效的shell=True
,但我想避免这种情况,因为安全相关的危险阻碍了shell=True
的使用。
一次删除大量文件夹(非空)的最佳方法是什么?我认为必须调整一个相关问题中给出的一些答案,但到目前为止我还没有。我怎么能这样做?
答案 0 :(得分:3)
您可以使用glob
module找到目录,然后在每个目录上使用shutil.rmtree()
:
from glob import iglob
import shutil
for path in iglob('.../run*'):
shutil.rmtree(path)
因为您不需要拥有所有匹配目录的完整列表,所以我使用glob.iglob()
逐个生成匹配的路径。