似乎在Windows中,realpath()无法解析符号链接(不是快捷方式 - * .lnk)。我在这里找到了python3的一个开放的bug:https://bugs.python.org/issue9949
有没有解决方法?我最感兴趣的是Python 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系统上正确构建。