在 R 中无法下载 .tar
Trouble downloading .tar in R
我编写了构建 URL 从某个网站下载文件的代码。
当我将其粘贴到浏览器中时,它会立即下载必要的文件,作为 tar 文件夹 (.tar),然后我可以轻松解压缩。
我需要它在 R 中的代码中执行此操作。
我研究了几个在 R 中下载的函数,几乎所有函数似乎都有效,但是当我尝试解压缩它时(手动,检查有什么问题),我收到一条消息说:"The archive is corrupt".
我已经尝试使用 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,有一次报错:
Error in curl_download(data, destfile = vncZipPath, quiet = FALSE, mode = "w") : HTTP error 500.
当我尝试解压缩文件时,我总是收到错误消息:
H:\VNC Files\vnc.tar.gz: The archive is corrupt
我尝试了很多选项,以至于我不记得所有的选项。但似乎没有任何效果。 (同样,我写的 URL 在粘贴到浏览器时确实可以完成这项工作。问题是从 R 发送它。)
如有任何建议,我将不胜感激。
提前致谢,
男
这是URL下载文件:
(我通过删除一些文件 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 让它工作!我尝试了很多在网上找到的建议,但 none 工作正常。这是完美运行的代码,感谢@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
这对我有用 - 将这四个函数剪切并粘贴到 R 会话中,如果它起作用,很好,如果它不起作用,那么编辑你的问题以仅包含这四行 并显示错误信息:
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"
d = tempfile()
download.file(my_url, d, mode="wb")
untar(d, compress=TRUE, list=TRUE)
# [1] "MANIFEST.txt"
这是关于在 R 中下载和解压 tar 文件的最简单方法,您的问题应该是这样的。
如果这可行,您应该有一个文件存在并且这么大(尽管我看到文件大小有一些变化...):
file.exists(d)
## [1] TRUE
file.size(d)
## [1] 32654
解压文件到当前目录,取出list=TRUE
:
有什么吗?
file.exists("MANIFEST.txt")
## [1] FALSE
没有。下载并 untar
:
d = tempfile()
download.file(my_url, d, mode="wb")
untar(d, compress=TRUE)
似乎什么都没有发生,但是:
file.exists("MANIFEST.txt")
## [1] TRUE
一个文件出现。所有的东西都出现了:
> list.files(".")
[1] "10895295-0a9d-414b-a367-24d29f1bd898"
[2] "14a97b71-eb7c-4e3c-bdf6-dd310daa8337"
[3] "2f22c96a-7b69-4e9c-96ac-be58fc2a79f1"
[4] "38d7d00a-594d-4bdc-a34c-660bfc195ff0"
[5] "3fcc165a-500b-4a2e-99d8-911448fe57d2"
[6] "4e376dc4-d851-480e-a21c-bd30405a7274"
[7] "5c31c14c-6d61-4097-bef1-fd99aa1d9e3d"
[8] "696c51da-f166-4dbb-8ba2-e6ecc11a7ccd"
[9] "6b4f0ea1-3884-45e4-994e-3ebc1c76c2a1"
[10] "7c7ceb7e-25be-4056-bcea-3ef319d42342"
[11] "c37cfb04-f560-4cc9-bcec-666300cc93d6"
[12] "e02c3f8a-88fc-479a-9827-682c16581313"
[13] "MANIFEST.txt"
我编写了构建 URL 从某个网站下载文件的代码。 当我将其粘贴到浏览器中时,它会立即下载必要的文件,作为 tar 文件夹 (.tar),然后我可以轻松解压缩。 我需要它在 R 中的代码中执行此操作。
我研究了几个在 R 中下载的函数,几乎所有函数似乎都有效,但是当我尝试解压缩它时(手动,检查有什么问题),我收到一条消息说:"The archive is corrupt".
我已经尝试使用 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,有一次报错:
Error in curl_download(data, destfile = vncZipPath, quiet = FALSE, mode = "w") : HTTP error 500.
当我尝试解压缩文件时,我总是收到错误消息:
H:\VNC Files\vnc.tar.gz: The archive is corrupt
我尝试了很多选项,以至于我不记得所有的选项。但似乎没有任何效果。 (同样,我写的 URL 在粘贴到浏览器时确实可以完成这项工作。问题是从 R 发送它。)
如有任何建议,我将不胜感激。
提前致谢,
男
这是URL下载文件:
(我通过删除一些文件 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 让它工作!我尝试了很多在网上找到的建议,但 none 工作正常。这是完美运行的代码,感谢@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
这对我有用 - 将这四个函数剪切并粘贴到 R 会话中,如果它起作用,很好,如果它不起作用,那么编辑你的问题以仅包含这四行 并显示错误信息:
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"
d = tempfile()
download.file(my_url, d, mode="wb")
untar(d, compress=TRUE, list=TRUE)
# [1] "MANIFEST.txt"
这是关于在 R 中下载和解压 tar 文件的最简单方法,您的问题应该是这样的。
如果这可行,您应该有一个文件存在并且这么大(尽管我看到文件大小有一些变化...):
file.exists(d)
## [1] TRUE
file.size(d)
## [1] 32654
解压文件到当前目录,取出list=TRUE
:
有什么吗?
file.exists("MANIFEST.txt")
## [1] FALSE
没有。下载并 untar
:
d = tempfile()
download.file(my_url, d, mode="wb")
untar(d, compress=TRUE)
似乎什么都没有发生,但是:
file.exists("MANIFEST.txt")
## [1] TRUE
一个文件出现。所有的东西都出现了:
> list.files(".")
[1] "10895295-0a9d-414b-a367-24d29f1bd898"
[2] "14a97b71-eb7c-4e3c-bdf6-dd310daa8337"
[3] "2f22c96a-7b69-4e9c-96ac-be58fc2a79f1"
[4] "38d7d00a-594d-4bdc-a34c-660bfc195ff0"
[5] "3fcc165a-500b-4a2e-99d8-911448fe57d2"
[6] "4e376dc4-d851-480e-a21c-bd30405a7274"
[7] "5c31c14c-6d61-4097-bef1-fd99aa1d9e3d"
[8] "696c51da-f166-4dbb-8ba2-e6ecc11a7ccd"
[9] "6b4f0ea1-3884-45e4-994e-3ebc1c76c2a1"
[10] "7c7ceb7e-25be-4056-bcea-3ef319d42342"
[11] "c37cfb04-f560-4cc9-bcec-666300cc93d6"
[12] "e02c3f8a-88fc-479a-9827-682c16581313"
[13] "MANIFEST.txt"