使用AzureStor包从Azure Blob存储下载JSON文件到R时遇错误求助
问题描述
尝试从Azure Blob容器下载数据,使用AzureStor包操作时遇到错误。具体步骤与报错如下:
- 生成Blob容器对象:
cont<-blob_container('https://AccountName.blob.core.windows.net/BlobContainer',key='AccountKey')
- 获取Blob内文件列表:
list_files_blob<-list_blobs(cont, dir = "path where files are located")
- 执行批量下载,目标是将所有文件保存到同一本地文件夹:
multidownload_blob(cont,src = list_files_blob$name ,dest = 'path to copy files',overwrite = T)
运行后触发错误:
Error: 'dest' must contain one name per file in 'src'
当前环境:R版本4.1.2,AzureStor包版本3.7.0。
解决方案
multidownload_blob要求dest参数的长度必须与src完全匹配,即每个源文件对应一个具体的本地文件路径。要实现所有文件保存到同一文件夹,只需为每个源文件拼接完整的本地路径即可:
修改下载代码如下:
# 指定本地目标文件夹路径 local_target_dir <- 'path to copy files' # 为每个源文件生成对应的本地完整路径(提取文件名后与目标文件夹拼接) dest_full_paths <- file.path(local_target_dir, basename(list_files_blob$name)) # 执行批量下载 multidownload_blob(cont, src = list_files_blob$name, dest = dest_full_paths, overwrite = T)
代码中basename()用于提取Blob文件的纯文件名(避免将云端的目录结构同步到本地),再通过file.path()与目标文件夹路径组合,生成与src长度一致的dest向量,即可完成批量下载到同一文件夹的需求。
内容的提问来源于stack exchange,提问作者Borja
相关产品推荐
相关产品推荐

