【问题标题】:Download zip file to R when download link ends in '/download'当下载链接以“/download”结尾时,将 zip 文件下载到 R
【发布时间】:2021-11-19 10:22:55
【问题描述】:

我的问题与post 类似,但解决方案建议似乎不适用。

我有很多压缩数据存储在一个在线服务器 (B2Drop) 上,它提供了一个扩展名为 "/download" instead of ".zip" 的下载链接。我一直无法让here 描述的方法起作用。

我创建了一个测试下载页面https://b2drop.eudat.eu/s/K9sPPjWz3jxtXEq,其中下载链接https://b2drop.eudat.eu/s/K9sPPjWz3jxtXEq/download可以通过右击下载按钮获得。这是我的脚本:

temp <- tempfile()
download.file("https://b2drop.eudat.eu/s/K9sPPjWz3jxtXEq/download",temp, mode="wb")
data <- read.table(unz(temp, "Test_file1.csv"))
unlink(temp)

当我运行它时,我得到了错误:

download.file("https://b2drop.eudat.eu/s/K9sPPjWz3jxtXEq/download",temp, mode="wb") 尝试 URL 'https://b2drop.eudat.eu/s/K9sPPjWz3jxtXEq/download' 内容类型 'application/zip' 长度 558 字节 已下载 558 字节

数据

这通常表示 R 正在查找文件的工作目录存在问题。在这种情况下,应该是 temp wd

【问题讨论】:

    标签: r url download zip zipfile


    【解决方案1】:

    您的内部路径错误。您可以使用list=TRUE 列出存档中的文件,类似于命令行实用程序的-l 参数。

    unzip(temp, list=TRUE)
    #                  Name Length                Date
    # 1 Test/Test_file1.csv    256 2021-09-27 10:13:00
    # 2 Test/Test_file2.csv    286 2021-09-27 10:14:00
    

    不过,比read.table 更好,使用read.csv,因为它是逗号分隔的。

    data <- read.csv(unz(temp, "Test/Test_file1.csv"))
    head(data, 3)
    #   ID Variable1 Variable2 Variable Variable3
    # 1  1         f     54654       25        t1
    # 2  2         t       421       64        t2
    # 3  3         x      4521       85        t3
    

    【讨论】:

    • 成功了。谢谢@r2evans!
    • 因此,当我检索压缩文件时,该脚本可以正常工作,但我无法让它下载独立文件(xlsx、csv 或文本)。 Excel 示例here 代码:data &lt;- openxlsx::read.xlsx("Test_file_excel.xlsx")。表示该文件不存在。我假设文件名被指示为 excel 名称以外的其他名称?
    • 你下载到哪个目录?和getwd()一样吗?该文件对我来说打开得很好,所以它可能是一个工作目录问题。
    • 我使用与以前完全相同的方法(创建一个临时文档,相同的 wd),唯一的变化是 url 和 read.xlsx() 代码不包括解压缩功能。我去弄一下wd看看能不能找到解决办法,谢谢你的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多