检查两个路径是否解析到同一目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查两个路径是否解析到同一目录相关的知识,希望对你有一定的参考价值。

Check if two file paths resolve to the same file,解决方案是使用normalizePath;但是,这似乎不是目录的权威:

td1 <- tempdir()
td2 <- paste0(td1, "/")

dir.exists(td1) && dir.exists(td2)
#> [1] TRUE
file.create(file.path(td1, "foo.txt"))
#> [1] TRUE
file.exists(file.path(td2, "foo.txt"))
#> [1] TRUE

normalizePath(td1) == normalizePath(td2)
#> [1] FALSE

sessionInfo()
#> R version 3.5.1 (2018-07-02)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 10 x64 (build 17134)
#> 
#> Matrix products: default
#> 
#> locale:
#> [1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
#> [3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
#> [5] LC_TIME=English_Australia.1252    
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> loaded via a namespace (and not attached):
#>  [1] compiler_3.5.1  backports_1.1.2 magrittr_1.5    rprojroot_1.3-2
#>  [5] tools_3.5.1     htmltools_0.3.6 yaml_2.2.0      Rcpp_0.12.18   
#>  [9] stringi_1.1.7   rmarkdown_1.10  knitr_1.20      stringr_1.3.1  
#> [13] digest_0.6.16   evaluate_0.11

reprex package创建于2018-09-05(v0.2.0)。

在识别目录时是否有可靠(或更可靠)的方法?

答案

如果你愿意为此使用一个软件包,那么我在fs软件包上获得了很多成功,可以在各种操作系统中实现强大的路径操作。例如,当它通过fs::path_norm()进行规范化时,它将在Windows上删除此尾随斜杠。

td1 <- tempdir()
td2 <- paste0(td1, "/")

dir.exists(td1) && dir.exists(td2)
#> [1] TRUE
file.create(file.path(td1, "foo.txt"))
#> [1] TRUE
file.exists(file.path(td2, "foo.txt"))
#> [1] TRUE

normalizePath(td1) == normalizePath(td2)
#> [1] FALSE

library(fs)
path_norm(td1) == path_norm(td2)
#> [1] TRUE

sessionInfo()
#> R version 3.4.3 (2017-11-30)
#> Platform: x86_64-w64-mingw32/x64 (64-bit)
#> Running under: Windows 10 x64 (build 17134)
#> 
#> Matrix products: default
#> 
#> locale:
#> [1] LC_COLLATE=English_United States.1252 
#> [2] LC_CTYPE=English_United States.1252   
#> [3] LC_MONETARY=English_United States.1252
#> [4] LC_NUMERIC=C                          
#> [5] LC_TIME=English_United States.1252    
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> loaded via a namespace (and not attached):
#>  [1] compiler_3.4.3  backports_1.1.2 magrittr_1.5    rprojroot_1.3-2
#>  [5] tools_3.4.3     htmltools_0.3.6 yaml_2.1.16     Rcpp_0.12.18   
#>  [9] stringi_1.1.6   rmarkdown_1.8   knitr_1.17      stringr_1.2.0  
#> [13] digest_0.6.16   evaluate_0.10.1

reprex package创建于2018-09-05(v0.2.0)。

以上是关于检查两个路径是否解析到同一目录的主要内容,如果未能解决你的问题,请参考以下文章

检查文件夹路径

全网首发:VS编译出错:两个输出文件名解析为同一个输出路径

全网首发:VS编译出错:两个输出文件名解析为同一个输出路径

python批量检查通一个集群针对同一个域名解析到不同IP地址证书的有效性

域名解析的设置中,怎么将两个域名指向同一个IP的不同目录?

解析 Linux 内核可装载模块的版本检查机制