2016-09-21 4 views
0

в R, я хочу, чтобы загрузить и разархивировать все .gz файлы из любого каталога с этого сайта: ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI/разархивировать через список .gz

У меня возникают трудности с этим: я поставил все ~ 60 .gzs отсюда ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI/ в списке в R, и хотел бы развернуть каждого в каталог, но для жизни я не могу понять это.

R version 3.3.1 (2016-06-21) -- "Bug in Your Hair" 

> typeof(list_gz) 
[1] "list" 
> head(list_gz) 
[[1]] 
[1] "ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI//2014/GPCC_DI_201401.nc.gz" 

[[2]] 
[1] "ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI//2014/GPCC_DI_201402.nc.gz" 

> sapply(list_gz, function(i) getURL(untar(i))) 
gzip: can't stat: ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI//2014/GPCC_DI_201401.nc.gz (ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI//2014/GPCC_DI_201401.nc.gz.gz): No such file or directory 
Show Traceback 

Rerun with Debug 
Error in function (type, msg, asError = TRUE) : 
    Failed to connect to 0 port 80: Connection refused 

Я не слишком уверен здесь. Возможно, я должен переделать первую половину своего кода и загрузить ~ 60 .gzs вместо того, чтобы пытаться загрузить и разблокировать их в подходе list/sapply. Благодаря!

+0

Это не tar (.gz) файлы. –

+0

Сайт dwd.de, вероятно, расскажет вам. –

ответ

1

Я бы, вероятно, загрузился, а затем распакую.

убедитесь, что вы установили рабочий каталог.

library(curl) 
library(stringr) 

list_gz = list("ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI//2014/GPCC_DI_201401.nc.gz", 
       "ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI//2014/GPCC_DI_201402.nc.gz") 

sapply(list_gz, function(x) { 
    # this will dl the file and save with same name (name after last '/') 
    file_name = sub(".*//(.*)/", "", x) 
    year = c(str_match(file_name, "\\d\\d\\d\\d")) 
    if(!dir.exists(year)) dir.create(year) 
    curl_download(x, destfile = paste0(year, "/", file_name)) 
    # insert code for unzipping here - my computer wouldnt let me untar the files 
    # untar(paste0(year, "/", file_name)) 
}) 
+0

Единственное предостережение в том, что есть над .gz для разворота. что в нескольких подкаталогах ftp://ftp.dwd.de/pub/data/gpcc/GPCC_DI/, которые я пытаюсь загрузить и извлечь сразу – Evan

+1

, в этом случае вы можете извлечь год из строки загрузки и использовать его для назначьте местоположение загрузки. Неправильно настройте ответ, чтобы попытаться это отразить. – zacdav

+0

Результаты этой ошибки: Ошибка в curl_download (x, destfile = paste0 (year, "/", file_name)): Не удалось открыть файл 2013/GPCC_DI_201301.nc.gz. Любые идеи, почему curl_download не работает? – Evan

Смежные вопросы