用于Windows中符号链接的Python os.path.realpath()

时间:2017-04-10 22:06:51

标签: python windows python-2.7

似乎在Windows中,realpath()无法解析符号链接(不是快捷方式 - * .lnk)。我在这里找到了python3的一个开放的bug:https://bugs.python.org/issue9949

有没有解决方法?我最感兴趣的是Python 2。

2 个答案:

答案 0 :(得分:2)

Python函数os.path.realpath()返回给定路径的规范路径,消除了simlinks。

在Windows 7上,此函数does not work as expected因为它无法遵循符号链接(使用mklink创建。)由于错误已打开超过7年,我开始寻找解决方法。< / p>

我找到的解决方案是替换

realpath = os.path.realpath(path)

通过

realpath = path if not os.path.islink(path) else os.readlink(path)

功能os.readlink()在Windows 7上运行正常。

答案 1 :(得分:0)

jaraco.windows project提供jaraco.windows.filesystem.get_final_path,这可能是您正在寻找的。在3.9版本中,它还有一个jaraco.windows.filesystem.backports模块,它提供了为该Python bug提出的realpath函数。请尝试其中一个或两个功能,并报告其工作原理。

如果realpath函数适合您,则有一个patch_os_module,顾名思义,它可以修补os模块,以便os.path.realpath具有此行为从后端。在撰写本文时,它不会这样做,但如果这对您的用例有用,我很乐意添加它。

随意为Github中的项目做出贡献。请原谅这些文档 - 它们不能在诸如RTD的Unix系统上正确构建。