在Unix下,os.path.normpath将多个斜杠折叠为单个斜杠,除非出现两个斜杠,即路径的起点.为什么例外?
为了说明,我得到以下转换:
//double/slash/stays -> //double/slash/stays
/double/slash//gone// -> /double/slash/gone/
double//slash//gone/ -> double/slash/gone
///triple/slash/gone -> /triple/slash/gone
////quad/slash/gone -> /quad/slash/gone
Run Code Online (Sandbox Code Playgroud)
这对我来说很奇怪.我可以模糊地想象这对SMB安装或URL有用,但我不认为我关心这些.Python的行为是否有任何隐藏的智慧,或者我应该贬低前导//我自己?
[更新] 鉴于下面的答案,看起来最好不要崩溃//,而是要么只是接受它,要么将其视为错误.
因为POSIX允许以实现定义的方式处理以两个斜杠开头的路径.换句话说,// foo并不一定与所有POSIX系统上的/ foo相同.
以两个连续斜杠开头的路径名可以以实现定义的方式解释,但是应将两个以上的主斜杠视为单个斜杠.
另请参阅此错误报告(已关闭为无效).