R-4.3.3(Windows)下curl_download下载NCBI FTP文件失败求助
Windows下R-4.3.3从NCBI下载FTP文件的解决方案
报错原因
curl_download的报错是因为C:\Windows目录需要管理员权限才能写入,curl下载时会自动创建临时文件,普通用户权限无法在该目录操作,导致失败。
解决方案
1. 更换可写入的目标路径
将下载路径改为用户拥有写入权限的目录(如个人文档、桌面),避免使用系统目录:
library(curl) url <- "ftp://ftp.ncbi.nlm.nih.gov/refseq/M_musculus/mRNA_Prot/mouse.1.protein.faa.gz" # 替换为你的桌面路径(需修改用户名) tmp <- "C:/Users/你的用户名/Desktop/mouse.1.protein.faa.gz" curl_download(url, tmp)
也可以用R的用户目录简写~,自动指向你的个人文件夹:
tmp <- "~/mouse.1.protein.faa.gz" curl_download(url, tmp)
2. 使用download.file指定curl方法
既然wininet的FTP功能失效,可直接让download.file调用curl方法(Windows版R-4.3.3通常自带curl):
url <- "ftp://ftp.ncbi.nlm.nih.gov/refseq/M_musculus/mRNA_Prot/mouse.1.protein.faa.gz" tmp <- "~/mouse.1.protein.faa.gz" download.file(url, destfile = tmp, method = "curl", mode = "wb")
注:mode="wb"用于确保二进制压缩文件的正确写入。
3. 手动指定临时文件目录
若坚持使用原目标路径,可通过curl_options指定有权限的临时目录:
library(curl) url <- "ftp://ftp.ncbi.nlm.nih.gov/refseq/M_musculus/mRNA_Prot/mouse.1.protein.faa.gz" tmp <- "C:/Windows/Temp.curl" # 用R默认临时目录(普通用户可写入) h <- new_handle(tempdir = tempdir()) curl_download(url, tmp, handle = h)
内容的提问来源于stack exchange,提问作者user24533042
相关产品推荐
相关产品推荐

