如何有效地从 http link 下载和解压缩大文件?
how to download and unzip efficiently large files from a http link?
我有一个文件列表,例如
mylist <- c('http://myweb/myzip1.gz',
'http://myweb/myzip2.gz',
'http://myweb/myzip3.gz)
我需要下载它们并解压到另一个路径D://mydata/
。
现在,我用过purrr
和download.file
#get files
myfunc <- function(mystring){
download.file(mystring,
destfile = paste0('D://mydata/', basename(mystring))
}
#download data
map(mylist, myfunc)
但在下载几个小时后(每个文件超过 10GB),Rstudio
冻结(尽管下载仍在后台进行)。
有没有更高效的方法?我想跟踪 R 中的下载,而不必在某个时候冻结。
谢谢!
我认为以上信息不足以将 'an answer' 作为单个代码块提供,但我认为您可以做一些事情,共同解决问题:
- 在终端模式下尝试 运行 R 而不是 RStudio IDE 本身。 (这可以从较新版本的 Rstudio 访问。)
- 'Chunk' 任务分成更小的批次,例如,您可以使用
seq_along(mylist) %/% N
拆分文件名列表,其中 N 是块大小。考虑使用 for 循环在批次之间迭代,并且 purrr
仅在批次内迭代。
- 显式删除您最近加载到 R 环境中的文件,然后显式调用垃圾收集器
gc()
以将它们从 RAM 中删除。
我有一个文件列表,例如
mylist <- c('http://myweb/myzip1.gz',
'http://myweb/myzip2.gz',
'http://myweb/myzip3.gz)
我需要下载它们并解压到另一个路径D://mydata/
。
现在,我用过purrr
和download.file
#get files
myfunc <- function(mystring){
download.file(mystring,
destfile = paste0('D://mydata/', basename(mystring))
}
#download data
map(mylist, myfunc)
但在下载几个小时后(每个文件超过 10GB),Rstudio
冻结(尽管下载仍在后台进行)。
有没有更高效的方法?我想跟踪 R 中的下载,而不必在某个时候冻结。
谢谢!
我认为以上信息不足以将 'an answer' 作为单个代码块提供,但我认为您可以做一些事情,共同解决问题:
- 在终端模式下尝试 运行 R 而不是 RStudio IDE 本身。 (这可以从较新版本的 Rstudio 访问。)
- 'Chunk' 任务分成更小的批次,例如,您可以使用
seq_along(mylist) %/% N
拆分文件名列表,其中 N 是块大小。考虑使用 for 循环在批次之间迭代,并且purrr
仅在批次内迭代。 - 显式删除您最近加载到 R 环境中的文件,然后显式调用垃圾收集器
gc()
以将它们从 RAM 中删除。