normalizePath
位于 base
包(package)。 说明
将文件路径转换为平台的规范形式,以 user-understandable 形式显示它们,以便可以比较相对路径和绝对路径。
用法
normalizePath(path, winslash = "\\", mustWork = NA)
参数
path |
文件路径的字符向量。 |
winslash |
Windows 上使用的分隔符 - 在其他地方被忽略。必须是 |
mustWork |
逻辑:如果 |
细节
Tilde-expansion (参见 path.expand
)首先在 paths
上完成。
在类 Unix 平台支持的地方,它会尝试将路径转换为规范形式的绝对路径(无‘./', '../’也不是符号链接)。它依赖于POSIX系统函数realpath
:如果平台没有(我们知道当前没有示例),那么结果将是绝对路径,但可能不是规范的。甚至在哪里realpath
使用规范路径不必是唯一的,例如通过硬链接或多个安装。
在 Windows 上,它将相对路径转换为绝对路径,解析符号链接,将路径元素的短名称转换为长名称,并确保分隔符是由winslash
。它将匹配每个路径元素 case-insensitively 或在通常的名称查找过程中区分大小写,并返回规范的大小写。它依赖于Windows API函数GetFinalPathNameByHandle
如果出现错误(例如权限不足),它当前会回退到R3.6(及更早版本)的实现,依赖于GetFullPathName
和GetLongPathName
具有注释部分中说明的限制。尝试在存在映射驱动器或符号链接的情况下不引入 UNC 路径:如果GetFinalPathNameByHandle
返回 UNC 路径,但是GetLongPathName
返回以驱动器号开头的路径,R 回退到R3.6(及更早版本)实施。可以使用在当前区域设置中无效的 UTF-8 编码路径。
mustWork = FALSE
对于表达消息中使用的路径很有用。
值
字符向量。
如果输入不是真实路径,则结果取决于系统(除非 mustWork = TRUE
,此时这应该是一个错误)。它将是相应的输入元素或将其转换为绝对路径。
由于多种原因,转换为绝对文件路径可能会失败。最常见的是
-
文件路径的多个组成部分之一不存在。
-
最后一个之前的组件不是目录,或者没有足够的权限读取该目录。
-
对于相对路径,无法确定当前目录。
-
符号链接指向不存在的位置或链接形成循环。
-
规范化路径将超过文件路径支持的最大长度。
注意
路径的规范形式可能不是您所期望的。例如,在 macOS 上绝对路径,例如“/tmp' 和 '/var' 是符号链接。在 Linux 上,由 bash 进程替换生成的路径是符号链接(例如‘/proc/fd/63’)到管道,并且这种路径没有规范形式。在R在 Windows 3.6 及更早版本中,将不会解析符号链接,并且将返回路径元素的长名称及其所在大小写path
,这在不区分大小写的文件夹中可能不规范。
例子
# random tempdir
cat(normalizePath(c(R.home(), tempdir())), sep = "\n")
相关用法
- R norm 计算矩阵的范数
- R noquote “无引号”字符串打印类
- R numeric 数值向量
- R numeric_version 数字版本
- R ns-dblcolon 双冒号和三冒号运算符
- R nargs 函数的参数数量
- R ns-internals 命名空间内部结构
- R ns-reflect 命名空间反射支持
- R ns-hooks 命名空间事件的钩子
- R nchar 计算字符数(或字节数或宽度)
- R ns-load 加载和卸载命名空间
- R name 名称和符号
- R nrow 数组的行/列数
- R names 对象的名称
- R ns-topenv 顶级环境
- R nlevels 因子的水平数
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
- R rank 样本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Express File Paths in Canonical Form。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。