download.file в tryCatch не удаляет файл при ошибке - PullRequest
0 голосов
/ 08 февраля 2020

Это может показаться глупым вопросом. Может быть это. Я надеюсь, что нет!

Я использую download.file для получения файлов с веб-сайта. Я зацикливался на год, так как год указан в названии файла, который я пытаюсь получить. В течение нескольких лет нет данных и, следовательно, нет файла. Это приводит к ошибке в download.file, и файл, созданный download.file, автоматически удаляется. Из-за этой ошибки я завернул ее в функцию tryCatch, чтобы обработать ошибку и продолжать в течение многих лет, где есть данные. Например,

 result <- tryCatch(
  {
  download.file(fpath,destfile=destfile,quiet=TRUE)
  res <- TRUE
  },
  error = function(e) return(FALSE),
  warning = function(w) return(FALSE)
 )
 if (!result) {
  file.remove(destfile)
  next
}

Однако download.file создает пустой файл в destfile. (Который обычно автоматически удаляется, когда допускается ошибка и прекращение). Если я попытаюсь удалить его из R, используя file.remove или unlink, я получу предупреждение:

Предупреждение: в file.remove (destfile): невозможно удалить файл '... / 2000.txt .gz ', причина' Отказано в доступе '

Если я пытаюсь удалить этот файл в проводнике windows, я получаю «Действие не может быть завершено, потому что файл открыт в сеансе Rstudio R».

Похоже, что обнаружение ошибки в функции tryCatch препятствует правильной очистке download.file. Кто-нибудь сталкивался с этим или знает, как это исправить?

Мне не хватает чего-то простого?

Спасибо

...