如何从http链接有效地下载和解压缩大文件?

时间:2018-07-31 12:39:49

标签: r curl purrr

我有一个文件列表,例如

mylist <- c('http://myweb/myzip1.gz',
            'http://myweb/myzip2.gz',
            'http://myweb/myzip3.gz)

我需要下载它们并将它们解压缩到另一个路径D://mydata/

现在,我已经使用了purrrdownload.file

#get files
myfunc <- function(mystring){
  download.file(mystring,
                destfile =  paste0('D://mydata/', basename(mystring))
}

#download data
map(mylist, myfunc)

但是下载几个小时后(每个文件为10GB以上),Rstudio会冻结(即使下载仍在后台进行)。

有更有效的方法吗?我想跟踪R中的下载,而不必在某个时候冻结。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为上面的信息不足以作为单个代码块给出“答案”,但是我认为您可以做一些事情,共同解决问题:

  1. 尝试以终端模式而不是RStudio IDE正常运行R。 (可从较新的Rstudio版本访问。)
  2. 将任务“分块”成较小的批次,例如,您可以使用seq_along(mylist) %/% N拆分文件名列表,其中N是块大小。考虑使用for循环在批之间进行迭代,而purrr仅在批内进行迭代。
  3. 显式删除最近加载到R环境中的文件,然后显式调用垃圾回收器gc()从RAM中删除它们。