如何在 Nim 中规范化文件路径?

Ale*_*hin 0 nim-lang

os.normalized_path输出.,而不是完整的路径。

import os
echo ".".normalized_path
Run Code Online (Sandbox Code Playgroud)

Yar*_*ico 6

该输出是正确的 - 它已“规范化”到当前目录,因此它是“.”,这是 *nix 上的有效路径。如果要获取完整路径,请执行以下操作:

import os
echo ".".normalizedPath().absolutePath()
Run Code Online (Sandbox Code Playgroud)


小智 5

@Yardanico 的答案仍然是正确的,但这太长了,无法留下评论。

normalizePath不知道当前工作目录并在抽象路径上操作,保留输入是绝对的还是相对的。它的作用是:

  • 删除多余/尾部斜杠: 'foo//bar/' => 'foo/bar'
  • 解析双点: 'foo/../bar' => 'bar', '../foo' => '../foo'
  • 删除开头的 './': './foo' => 'foo'

它不是:

  • 删除绝对路径中的初始双点,即 '/..' => '/..'
  • 将路径分隔符转换为本机操作系统分隔符。
  • 正确处理 os9 的特殊 updirs