标准化Unix文件路径的一种好方法是什么(即,删除点链接和重复的斜杠)?我既不需要也不需要符号链接解析。
关于无链接解析的先决条件:
它将破坏包含链接的路径。举例来说,a/b/../foo是不一样的a/foo,如果b是一个符号。例:
a
? b (symlink to c/d)
? c ? d
? ? foo
? foo
Run Code Online (Sandbox Code Playgroud)
在这种情况下,a/b/../foo实际上是a/c/foo,而纯粹基于文本的规范化会错误地认为是a/foo。
您确定要吗?
如果这样做,则应处理所有这些问题:
/a且//a保持不变,但///a并////a成为/a。请参阅此处以获取解释。a//b)应该被删除。a/./b)应该被去除。a/../b?a/b。/../a?/a。还有/a/../../../b呢 /b。../a?../a。还有a/../../../b呢 ../../b。如果有建议,请查看python lib中的normpath实现。当然,它是python,但算法可读性强。