R语言下载后缀为/download的zip压缩包并读取内部文件的问题
报错的根因不是工作目录问题,是你指定读取的文件名和压缩包内的实际文件路径不匹配。B2Drop将分享文件夹打包为zip时,会自动在压缩包根目录创建和分享ID同名的子目录,你要读取的csv文件存放在该子目录下,并非直接在压缩包根目录。
你可以先运行以下代码查询压缩包内的所有文件路径,确认目标文件的准确位置:
temp <- tempfile() download.file("https://<你的B2Drop分享路径>/download",temp, mode="wb") # 打印压缩包内所有文件的完整路径 print(unzip(temp, list = TRUE)$Name) unlink(temp)
本次测试场景下,运行上述代码后会看到目标文件路径为K9sPPjWz3jxtXEq/Test_file1.csv,将读取路径替换为该值即可正常读取。
修正后完整可运行代码
temp <- tempfile() download.file("https://<你的B2Drop分享路径>/download",temp, mode="wb") # 替换为实际查询到的文件路径即可 data <- read.table(unz(temp, "K9sPPjWz3jxtXEq/Test_file1.csv"), header = TRUE) unlink(temp)
如果需要批量处理多个同类型B2Drop压缩包,可通过代码自动提取子目录名拼接目标文件名,无需手动查询路径:
temp <- tempfile() download.file("https://<你的B2Drop分享路径>/download",temp, mode="wb") # 自动获取压缩包内第一个子目录名 sub_dir <- unzip(temp, list = TRUE)$Name[1] # 拼接目标文件名 target_path <- paste0(sub_dir, "Test_file1.csv") data <- read.table(unz(temp, target_path), header = TRUE) unlink(temp)
内容的提问来源于stack exchange,提问作者L.Gillespie
相关产品推荐
相关产品推荐

