(Если вы не укажете свою операционную систему и не разместите часть своего кода, это просто догадки.)
Поскольку удаление одного и того же файла вручную вызывает такое же поведение, разумно предположить, что это не проблема конкретно с вашим кодом.
Некоторые файловые системы (на ум приходит FUSE в Linux, а также некоторые сетевые файловые системы) представляют такое поведение при удалении файлов, которые используются другим процессом.