使用R下载NetCDF文件:手动正常但代码下载文件过小无法使用
问题原因与解决方法
你的R代码存在关键错误:你正在下载FTP目录的网页内容,而非目标NetCDF文件,这就是为什么下载的文件仅119KB(实际是目录的HTML页面),而手动下载的是正常的5000KB数据文件。
修正后的代码
需要将root目录地址与生成的filename拼接为完整的文件URL,再执行下载:
now <- as.Date(Sys.Date()) now <- paste0(substr(now,1,4), substr(now,6,7)) filename <- paste0('prate.', now, '.prob.adj.seas.nc') root <- 'https://ftp.cpc.ncep.noaa.gov/NMME/prob/netcdf/' full_url <- paste0(root, filename) # 拼接完整文件路径 download.file(full_url, filename, mode = "wb")
额外建议
- 验证文件可用性:有时候当月的文件可能还未更新到服务器,可手动访问生成的
full_url,确认文件存在后再执行下载。 - 添加错误处理:用
httr包提前检查文件状态,避免下载无效内容:library(httr) response <- HEAD(full_url) if (status_code(response) == 200) { download.file(full_url, filename, mode = "wb") } else { stop("目标文件不存在或无法访问") } - 确认命名规则:确保生成的文件名完全匹配服务器上的文件格式(你的代码已通过
substr获取两位月份,这部分无需调整)。
内容的提问来源于stack exchange,提问作者gianca
相关产品推荐
相关产品推荐

