如何使用Python一次删除大量文件夹?

时间:2016-02-24 16:54:46

标签: python python-2.7 shell

我看过很多问题(Delete Folder Contents in PythonHow 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的使用。

一次删除大量文件夹(非空)的最佳方法是什么?我认为必须调整一个相关问题中给出的一些答案,但到目前为止我还没有。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

您可以使用glob module找到目录,然后在每个目录上使用shutil.rmtree()

from glob import iglob
import shutil

for path in iglob('.../run*'):
    shutil.rmtree(path)

因为您不需要拥有所有匹配目录的完整列表,所以我使用glob.iglob()逐个生成匹配的路径。