Что делает shutil.rmtree(d, ignore_errors=True)?
Я работал с модулем shutil. Моя файловая структура выглядела следующим образом: проекты/серверная часть/-3-5 репозиториев- .
В одном из репозиториев views.py Я использовал
for d in destDirs:
shutil.rmtree(d, ignore_errors=True)
destDirs = "projects/backend/repo1/static/file1
После этого вся моя файловая система была удалена.
После запуска API, содержащего этот код, вся моя файловая система была удалена.
поскольку destDirs
является строкой, он будет перечислять все символы строки и, таким образом, вызовет:
shutil.rmtree('p', ignore_errors=True)
shutil.rmtree('r', ignore_errors=True)
shutil.rmtree('o', ignore_errors=True)
shutil.rmtree('j', ignore_errors=True)
shutil.rmtree('e', ignore_errors=True)
shutil.rmtree('c', ignore_errors=True)
shutil.rmtree('t', ignore_errors=True)
shutil.rmtree('s', ignore_errors=True)
shutil.rmtree('/', ignore_errors=True) # root
# …
так что да, это приведет к удалению всей файловой системы, если ее можно вызвать с помощью /
(поскольку это корень файловой системы).
таким образом, вы используете:
shutil.rmtree(destDirs, ignore_errors=True)
или вы создаете destDirs
список строк, как следует из названия.