用 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 功能。如果远程服务器配置为正确响应目录索引请求,您可以使用来自httr
的HEAD
:
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 200
或404
,具体取决于配置(实际上并不限于此,具体取决于网络服务器)。
【讨论】:
感谢您的回答和扩展信息。似乎没有通用方法(正如您提到的,它取决于服务器配置)。就我而言,我想访问那个特定的服务器,所以希望事情会随着时间的推移保持一致。我可能会尝试其他方法来解决我的问题,但无论如何这是非常有用的知识。以上是关于用 R 检查远程目录是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
开启X2.5远程附件提示 尝试上传失败,请检查远程目录是不是有权限