shutil.rmtree
делает системный вызов os.stat
для каждой записи файла, через которую он проходит, чтобы определить, является ли это файл или каталог, что является огромной тратой времени, поскольку эта информация уже получена, когда каталог указан в списке.
Эта информация используется в функции os.walk
(подробнее см. PEP-471 ), с помощью которой вы можете самостоятельно реализовать rmtree
:
import os
def rmtree(directory):
for root, dirs, files in os.walk(directory, topdown=False):
for file in files:
os.remove(os.path.join(root, file))
for dir in dirs:
os.rmdir(os.path.join(root, dir))
os.rmdir(directory)