警告消息在download.file中:下载具有非零退出状态

时间:2014-03-15 14:09:41

标签: r curl download

我正在从data.gov网站下载数据,我在此过程中遇到以下两类错误:

fileUrl <- "http://catalog.data.gov/dataset/expenditures-on-children-by-families"
download.file(fileUrl,destfile=".data/studentdata.csv",method="curl")
Warning message:
In download.file(fileUrl, destfile = ".data/studentdata.csv", method = "curl") :
  download had nonzero exit status

我尝试删除其他论坛中建议的方法=“curl”,但我再次收到此新错误

download.file(fileUrl,destfile=".data/studentdata.csv")
Error in download.file(fileUrl, destfile = ".data/studentdata.csv") : 
  cannot open destfile '.data/studentdata.csv', reason 'No such file or directory'

5 个答案:

答案 0 :(得分:1)

我认为您的curl运作不正常有两个主要因素。

首先,问题出在您的URL上。 fileUrl <- "http://catalog.data.gov/dataset/expenditures-on-children-by-families"。在您的URL中,未将其引用为csv文件。因此,即使将目标设置为csv

之类的destfile = ".data/studentdata.csv"文件,它们也不会起作用

我有一个使用相同代码(不同数据集)获取csv数据集的示例:

  1. DataURL<- "https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD"(此链接引用的是rows.csv文件)
  2. download.file(DataURL, destfile="./data/rows.csv", method="curl")(使用curl的方法完全相同)

第二,以前,我遇到了一个问题,即curl不起作用,即使我使用了指向csv文件的正确URL也是如此。但是,当我诊断得更深时,我发现了一个有趣的事实,说明为什么我的curl方法无法正常工作。这是我的R会话程序。我使用了发生错误的32-bitR。然后,我尝试将会话更改为64-bitR。令人惊讶的是,当时下载状态为运行中。要查看您的R会话体系结构(无论您使用的是32-bit还是64-bit),请输入R:

sessionInfo()
  

R版本3.5.3(2019-03-11)

     

平台:x86_64-w64-ming32 / x64(64位)

     

在以下环境中运行:Windows> = 8 x64(内部版本9200)

您必须将您的R从32-bit切换到64-bit,以避免'curl' call had nonzero exit status。您进入R目录文件夹,然后运行64-bitR。

如果使用Windows操作系统并将R安装在默认路径文件夹中,则可以运行此C:\Program Files\R\R-3.5.3\bin\x64\R.exe。 (我使用的是3.5.3版本,因此可能与您的版本不同)

如果您使用的是R-studio,则可以在菜单栏Tools-> Global Options-> R version-> Change-> {{ 1}}-> Use your machine's default version of R64 (64-bit)。然后重新启动您的R-studio。

但是,这取决于您的OS体系结构。如果您使用的是OK操作系统,则必须寻找另一种解决方法。

答案 1 :(得分:0)

所以查看download.file(...)的代码,如果指定method="curl",该函数会尝试使用curl shell命令。如果您的系统上不存在此命令,则会出现上述错误。

如果您没有指定方法,则默认使用内部R方法进行下载,这显然适用于您的系统。在这种情况下,该函数试图将文件放在.data/studentdata.csv中,但显然没有.data目录。尝试取出.

当此下载有效时,您将获得text/html文件,而不是csv文件。您的网址指向网页,而不是下载链接。该页面确实有一个下载链接,但不幸的是它是一个pdf,而不是一个csv。

最后,如果您的目标是将数据放在R中(是吗?),,如果链接实际生成了csv文件,您可以更轻松地使用

df <- read.csv(fileUrl)

答案 2 :(得分:0)

如果我没有弄错,你只需要一个简单的拼写错误。我怀疑你有一个“数据”目录,而不是“.data”目录 - 在这种情况下,唯一的问题是你的destfile字符串需要以“./data”开头,而不是“.data”。

答案 3 :(得分:0)

我遇到了同样的问题。

然后我意识到我忘了创建&#34;数据&#34;目录!

因此,请尝试在fileURL行上方添加此项以首先创建目录。

if(!file.exists("data")){
  dir.create("data")
}

此外,如果您正在运行Mac,那么您希望保留method =&#34; curl&#34;下载https文件时。我不相信Windows有这个问题因此建议删除它。

答案 4 :(得分:0)

试试这个: 档案&lt; - 'http://catalog.data.gov/dataset/expenditures-on-children-by-families'

file&lt; - read.csv(file)