如何使用Python一次删除大量文件夹?
我看到很多问题(删除Python中的文件夹内容,如何删除文件或文件夹?,如何删除/删除Python中没有的文件夹?)询问如何删除文件夹(是否为空)但我还没有看到任何关于如何一次删除大量文件夹的问题。
我尝试使用shutils
并将其写成shutils.rmtree('.../run*')
(我想要删除的所有文件夹都称为run0000,run0001等等),但这不起作用,因为*未被理解。
最后,我最终导入了subprocess.Popen('rm -r ./run*/', shell=True)
并使用了subprocess.Popen('rm -r ./run*/', shell=True)
,这是因为shell=True
但我想避免这种情况,这是由于安全相关的危害,使用shell=True
。
一次擦除大量文件夹(非空)的最佳方法是什么? 我认为它必须是适应其中一个相关问题给出的一些答案,但目前为止我还没有做到。 我怎么能这样做?
您可以使用glob
模块来查找目录,然后在每个模块上使用shutil.rmtree()
:
from glob import iglob
import shutil
for path in iglob('.../run*'):
shutil.rmtree(path)
因为你不需要拥有所有匹配目录的完整列表,所以我使用glob.iglob()
匹配的路径。