os.path.normpath和符号链接

时间:2016-01-18 22:22:10

标签: python path symlink

os.path.normpath的文档内容如下:

  

此字符串操作可能会更改路径的含义   包含符号链接。

这里的含义和例子适用于意义会改变的地方?这个功能的应用在哪里不安全?解决方法是什么?

1 个答案:

答案 0 :(得分:3)

免责声明:我对此并不是100%肯定,现在无法访问* nix系统进行检查。你可能想检查,或者等到评论者告诉我我是对还是错; - )

那就是说,这是我的答案:

在给定示例中A/foo/../B - > A/B。如果没有符号链接,一切都很好。

使用相同的例子,让我们说:

  • 我们目前位于根目录/
  • A位于根目录(/ A)
  • A / foo是目录/ X / Y
  • 的符号链接
  • / X / B是目录

所以:

  1. A/foo/../B表示“目录B,位于A / foo的父目录中。”
  2. A / foo是/ X / Y的符号链接,所以“目录B,它位于A / foo的父目录中”实际上意味着“目录B,它位于/ X / Y的父目录中“
  3. / X / Y的父目录是/ X,所以“目录B,它位于/ X / Y的父目录中”实际上意味着“目录B,它位于/X".
  4. 所以A/foo/../B实际上是指/X/B
  5. 在这种情况下,A/foo/../B/A/B的标准化不正确,应该标准化为/X/B