用 R 检查远程目录是不是存在

Posted

技术标签:

【中文标题】用 R 检查远程目录是不是存在【英文标题】:Check the existence of remote directory with R用 R 检查远程目录是否存在 【发布时间】:2015-07-26 00:30:50 【问题描述】:

我想检查给定目录是否存在于远程服务器中,给定指向该目录的 URL。例如:

url <- "http://plasmodb.org/common/downloads/release-24"

如何在 R 中实现这一点?我考虑过使用url.show,它会下载并显示url(如果存在),但在目录不存在的情况下会出错。但我不确定最好的方法是什么,最好是在现有目录的情况下无需下载整个 URL。

【问题讨论】:

你试过?file.exists吗? @tospig 是的。它不起作用。 file.exists(url) 返回 FALSE 但它应该是 TRUE 【参考方案1】:

这将高度依赖于所讨论的服务器/资源,因为它与 HTTP 状态代码有关,而不是 R 功能。如果远程服务器配置为正确响应目录索引请求,您可以使用来自httrHEAD

library(httr)

status <- HEAD("http://plasmodb.org/common/downloads/release-24/")
status$status_code
## [1] 200

status <- HEAD("http://plasmodb.org/common/downloads/release-100/")
status$status_code
## [1] 404

这是一个格式良好的状态代码列表http://httpstatus.es,这是一个重要的 RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,您还应该仔细阅读其中的其他部分。最后,这是一个讨论“目录索引”的***链接http://en.wikipedia.org/wiki/Webserver_directory_index。这表明您可能还会得到403 vs 200404,具体取决于配置(实际上并不限于此,具体取决于网络服务器)。

【讨论】:

感谢您的回答和扩展信息。似乎没有通用方法(正如您提到的,它取决于服务器配置)。就我而言,我想访问那个特定的服务器,所以希望事情会随着时间的推移保持一致。我可能会尝试其他方法来解决我的问题,但无论如何这是非常有用的知识。

以上是关于用 R 检查远程目录是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

开启X2.5远程附件提示 尝试上传失败,请检查远程目录是不是有权限

使用 ssh 检查远程主机上是不是存在文件

Perl SSH 到远程服务器并检查文件是不是存在

下载前检查远程服务器上是不是存在图像

Android 使用其 URL 检查文件是不是存在于远程服务器中

如何检查远程文件是不是存在于代理后面