R 如何从http链接高效地下载和解压缩大型文件?
我有一个文件列表,例如R 如何从http链接高效地下载和解压缩大型文件?,r,curl,purrr,R,Curl,Purrr,我有一个文件列表,例如 mylist <- c('http://myweb/myzip1.gz', 'http://myweb/myzip2.gz', 'http://myweb/myzip3.gz) 但是在下载几个小时后(每个文件都是10GB+),Rstudio会冻结(即使下载仍然在后台进行) 有没有更有效的方法?我想跟踪R中的下载,而不必在某个时候冻结 谢谢 我认为上述信息不足以作为单个代码块给出“答案”,但我认为有几件事你可以这样做,
mylist <- c('http://myweb/myzip1.gz',
'http://myweb/myzip2.gz',
'http://myweb/myzip3.gz)
但是在下载几个小时后(每个文件都是10GB+),Rstudio
会冻结(即使下载仍然在后台进行)
有没有更有效的方法?我想跟踪R中的下载,而不必在某个时候冻结
谢谢 我认为上述信息不足以作为单个代码块给出“答案”,但我认为有几件事你可以这样做,集体解决问题:
seq_沿(mylist)%%/%N
拆分文件名列表,其中N是块大小。考虑使用一个for循环来在批之间迭代,而<代码> PURRR < /代码>只在批处理中。<李>
gc()
,将它们从RAM中删除李>
谢谢你,乔恩!一些评论。也许还有另外一个软件包比简单的
download.file
提供更健壮的下载。第二,这里我只是将文件下载到磁盘上,为什么你认为它们会填满RAM?第三,当文件已经在磁盘上时,你建议如何有效地解压?我怀疑在处理对象时,内容会加载到R环境中,但对此不确定。在进程运行时,考虑将调用添加到<代码>内存。siz()/<代码>或类似处,以查看这是否是真的,并且所使用的RAM的大小正在累积。如果您需要解压每个文件,最好以编程方式进行解压,但如果您遇到RAM缓冲区,则可能不会在同一阶段进行解压。
#get files
myfunc <- function(mystring){
download.file(mystring,
destfile = paste0('D://mydata/', basename(mystring))
}
#download data
map(mylist, myfunc)