Мне нужно разработать скрипт, который запустит некоторые вычисления. Я хочу, чтобы этот скрипт корректно обрабатывал ^C, удаляя некоторый временный каталог. Я пробовал несколько версий кода в signal_handler:
shutil.rmtree(self.temp)
или даже
os.system("rm -rf " + self.temp)
, когда я прерываю выполнение и вызывается обработчик для удаления каталога, я получаю такие ошибки, как:
OSError: [Errno 17] File exists : 'foo'
или
rm: Unable to remove directory foo: File exists
После выполнения , каталог, который я хочу удалить, пуст, и я могу удалить его с помощью rm -r
в оболочке. Однако, если я выполняю код:
for f in os.listdir(self.temp):
os.remove(os.path.join(self.temp,f))
for f in os.listdir(self.temp):
print f
os.rmdir(self.temp)
я, конечно, получаю ошибки, но второй цикл находит этот файл: .nfsA13D3
У кого-нибудь есть решение моей проблемы? Спасибо !