无法在R

时间:2018-02-22 12:25:58

标签: r download tar

我编写的代码构建了一个URL,用于从某个网站下载文件。 当我将其粘贴到浏览器中时,它会立即下载必要的文件,作为tar文件夹(.tar)然后我可以轻松解压缩。 我需要它来自R中的代码。

我已经研究了几个在R中下载的功能,几乎所有这些功能看起来都有效,但是当我尝试解压缩(手动检查错误)时,我收到一条消息: "存档已损坏"。

我使用file.download,curl_download和其他人尝试过它。

使用file.download,我收到错误:

H:\R\tempVNC.tar: Checksum error in H:\R\gdc_download_20180222_120441.tar. The file is corrupt

使用curl_download,我收到了错误:

  

curl_download出错(data,destfile = vncZipPath,quiet = FALSE,mode =" w"):HTTP错误500.

当我尝试解压缩文件时,我总是收到错误:

H:\VNC Files\vnc.tar.gz: The archive is corrupt

我尝试了很多选项,我不记得所有选项。但似乎没有任何效果。 (同样,我写的URL确实在粘贴到浏览器时完成了工作。问题在于从R发送它。)

我很感激有关此事的任何建议。

提前致谢,

中号

这是下载文件的URL:

  

https://api.gdc.cancer.gov/data/10895295-0a9d-414b-a367-24d29f1bd898,696c51da-f166-4dbb-8ba2-e6ecc11a7ccd,6b4f0ea1-3884-45e4-994e-3ebc1c76c2a1,7c7ceb7e-25be-4056-bcea-3ef319d42342,2f22c96a-7b69-4e9c-96ac-be58fc2a79f1,3fcc165a-500b-4a2e-99d8-911448fe57d2,38d7d00a-594d-4bdc-a34c-660bfc195ff0,14a97b71-eb7c-4e3c-bdf6-dd310daa8337,c37cfb04-f560-4cc9-bcec-666300cc93d6,5c31c14c-6d61-4097-bef1-fd99aa1d9e3d,e02c3f8a-88fc-479a-9827-682c16581313,4e376dc4-d851-480e-a21c-bd30405a7274?related_files=false

(我通过删除一些文件ID缩短了它,因此它不应该太长......)

我的代码的相关部分是:

my_url <- "https://api.gdc.cancer.gov/data/10895295-0a9d-414b-a367-24d29f1bd898,696c51da-f166-4dbb-8ba2-e6ecc11a7ccd,6b4f0ea1-3884-45e4-994e-3ebc1c76c2a1,7c7ceb7e-25be-4056-bcea-3ef319d42342,2f22c96a-7b69-4e9c-96ac-be58fc2a79f1,3fcc165a-500b-4a2e-99d8-911448fe57d2,38d7d00a-594d-4bdc-a34c-660bfc195ff0,14a97b71-eb7c-4e3c-bdf6-dd310daa8337,c37cfb04-f560-4cc9-bcec-666300cc93d6,5c31c14c-6d61-4097-bef1-fd99aa1d9e3d,e02c3f8a-88fc-479a-9827-682c16581313,4e376dc4-d851-480e-a21c-bd30405a7274?related_files=false"
vncTar <- paste(getwd(), "vnc.tar", sep = "//") # Create destination file
a <- curl_download(my_url, destfile = vncTar, quiet = TRUE, mode = "w")
download.file(my_url, destfile = vncTar, method = 'libcurl') #tried several "methods", including default...
dir.create("Extracted Files")
untar(vncTar, "Extracted Files")

# I also tried the following, using Rcurl package:
f = CFILE(vncTar, mode="wb")
curlPerform(url = my_url, writedata = f@ref)
close(f)
#The error this gave is:
#Error in function (type, msg, asError = TRUE)  : 
#error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake 
#failure

更新: 感谢@Spacedman让它发挥作用!我曾尝试过很多在网上找到的建议,但都没有正常工作。这是完美的代码,感谢@Spacedman:

my_url <- "https://api.gdc.cancer.gov/data/10895295-0a9d-414b-a367-24d29f1bd898,696c51da-f166-4dbb-8ba2-e6ecc11a7ccd,6b4f0ea1-3884-45e4-994e-3ebc1c76c2a1,7c7ceb7e-25be-4056-bcea-3ef319d42342,2f22c96a-7b69-4e9c-96ac-be58fc2a79f1,3fcc165a-500b-4a2e-99d8-911448fe57d2,38d7d00a-594d-4bdc-a34c-660bfc195ff0,14a97b71-eb7c-4e3c-bdf6-dd310daa8337,c37cfb04-f560-4cc9-bcec-666300cc93d6,5c31c14c-6d61-4097-bef1-fd99aa1d9e3d,e02c3f8a-88fc-479a-9827-682c16581313,4e376dc4-d851-480e-a21c-bd30405a7274?related_files=false"
vncTar <- paste(getwd(), "vnc.tar", sep = "//") # Create destination file name
download.file(my_url, vncTar, mode = "wb") 
files <- untar(vncTar, compress=TRUE, list=TRUE) # Saves list of file names
untar(vncTar, compress=TRUE) # Extracts the files

0 个答案:

没有答案