Мне нужно разработать скрипт, который запустит некоторые вычисления. Чтобы этот скрипт корректно обрабатывал^C, удалив временную директорию. Я пробовал несколько версий кода в signal_handler:Python, удалить каталог: error Файл существует
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
Кто-нибудь есть решение моей проблемы? Спасибо!
'.nfs *' файлы создаются, когда вы управляете файлом на жестком диске NFS, который все еще используется. После того, как счетчик ссылок на файл .nfs упадет до 0, он должен * исчезнуть (я столкнулся с случаями в прошлом, где это не всегда, хотя и требует ручной очистки). – twalberg