Как безопасно удалить деревья каталогов

#python #directory

Вопрос:

Я хочу, чтобы моя программа на python удаляла деревья каталогов, которые были созданы программой во время предыдущего выполнения. Я беспокоюсь, что если в программе есть ошибка, использующая shutil.rmtree migth, удалите гораздо больше, чем предполагалось, с катастрофическими последствиями. Существуют ли какие-либо лучшие методы того, как этого избежать?

У меня были следующие идеи, но они не кажутся мне очень элегантными:

  • Точно определите каждый файл, созданный программой, и удалите их один за другим, а затем удалите пустые каталоги.
  • Определение размера или количества файлов каталога и наложение на них верхней границы. (Например, удаляйте только папки размером менее 5 МБ и менее 100 файлов.)

Комментарии:

1. Если ваша программа создает временные файлы/каталоги, которые вы должны удалить впоследствии, почему бы не создать их с помощью tempfile ?

2. @VladSiv Файлы являются результатами работы программы, и я хочу удалить их только в том случае, если новый запуск приведет к новым результатам.

3. Может ли ваша программа затем перезаписать старые выходные данные? Это решило бы проблему с удалением.

4. @VladSiv Дерево файлов результатов может измениться в зависимости от ввода, что означает, что некоторые устаревшие файлы могут не быть перезаписаны, если я их каким-то образом не удалю.