Python, удалить каталог: файл ошибки существует

Мне нужно разработать скрипт, который запустит некоторые вычисления. Я хочу, чтобы этот скрипт корректно обрабатывал ^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

У кого-нибудь есть решение моей проблемы? Спасибо !

5
задан Will 27 June 2012 в 14:24
поделиться