如何检查下载的文件是不是存在

Posted

技术标签:

【中文标题】如何检查下载的文件是不是存在【英文标题】:How do I check the existence of a downloaded file如何检查下载的文件是否存在 【发布时间】:2013-02-01 00:50:21 【问题描述】:

我创建了一个 R markdown 文件,该文件首先从 Web 加载文件。我发现 cache=TRUE 有点不稳定,所以我想在下载文件之前添加一个 if 条件来检查下载的文件。

当前代码 - 始终下载文件

fileURL <- "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda"
setInternet2(TRUE)
download.file(fileURL ,destfile="./data/samsungData.rda",method="auto")
load("./data/samsungData.rda")

所需代码 - 仅在尚未下载的情况下上传

 destfile="./data/samsungData.rda"    
 fileURL <-
 "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda"   
 if (destFile doesNotExist) 
    setInternet2(TRUE)
    download.file(fileURL ,destfile,method="auto") 
    load("./data/samsungData.rda")
 
 load(destfile)

什么语法会给我条件“destFile doesNotExist”

【问题讨论】:

【参考方案1】:

你可以使用tryCatch

  if(!file.exists(destfile))
    res <- tryCatch(download.file(fileURL,
                              destfile="./data/samsungData.rda",
                              method="auto"),
                error=function(e) 1)
    if(dat!=1) load("./data/samsungData.rda") 

【讨论】:

对,我第一次没有正确的代码。但是,您仅在已下载文件的情况下加载文件,而不是在已经下载文件的情况下加载文件 - 即这不是 OP 所要求的。此外,由于拼写错误,代码无法正常工作,并且包含两次已保存在变量中的字符串。多么愚蠢的反对票。 file.exists(或!file.exists)似乎是这里真正的魔力,因为这就是OP所要求的。 dat 在做什么?【参考方案2】:

根据@agstudy 给出的答案

 destfile="./data/samsungData.rda" 
 fileURL <-
 "https://dl.dropbox.com/u/7710864/courseraPublic/samsungData.rda"   
 if (!file.exists(destfile)) 
    setInternet2(TRUE)
    download.file(fileURL ,destfile,method="auto") 
    load("./data/samsungData.rda")
 
 load(destfile)

【讨论】:

没有必要在条件块中包含load(".data/samsungData.rda"),因为如果文件不存在,您将加载它两次。【参考方案3】:

检查工作目录中是否存在文件的简单方法是: 其中(list.files() == "nameofile.csv")

这并不能完全回答他的问题,但我认为这可能对只想检查特定文件是否存在于其目录中的人有所帮助。

【讨论】:

我发现您的答案的这种变体效果很好 TRUE %in% (list.files() == 'nameofile.csv') - 使用它有时会返回一个整数,有时会返回一个向量,其中这总是返回一个布尔值。

以上是关于如何检查下载的文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在不下载的情况下使用其 URL 检查文件是不是存在?

如何检查隐藏文件是不是存在?

如何检查 FTP 服务器上是不是存在文件?

检查 URL 文件是不是存在

如何检查文件是不是存在无异常?

如何检查文件是不是存在无异常?