Python相对路径简化器

voi*_*urn 2 python windows path

我遇到了路径问题,遇到了 Windows 对路径中字符数的限制:256。

在我的 python 脚本中的某个地方,两个路径被附加,它们都是相对路径,并且它们变得非常长:

例如:

path1 = "..\\..\\..\\..\\..\\..\\..\\Source/lib/Target/abcd/abc_def_ghf/source/zzzModule/"
path2 = "../../../../../../../../Source/directory/Common/headerFile.h"
Run Code Online (Sandbox Code Playgroud)

附加路径:

path3 = "..\\..\\..\\..\\..\\..\\..\\Source/lib/Target/abcd/abc_def_ghf/source/zzzModule/../../../../../../../../Source/directory/Common/headerFile.h"
Run Code Online (Sandbox Code Playgroud)

并path3在我的 Visual Studio 解决方案中传递。此时VS停止并说找不到该文件。

这里的观察结果是,决赛path3上升了 7 个级别,然后下降了 7 个级别,然后又上升了 8 个级别。python 中是否有任何实用程序可以接受它并为我生成一个简化的相对路径?

例如

some_utility(path3) = "../../../../../../../../Source/directory/Common/headerFile.h"
Run Code Online (Sandbox Code Playgroud)

我知道我可以自己编写一个实用程序,但我只是检查是否有。如果有的话,我会节省 20 分钟的编码时间。

unu*_*tbu 5

在路径中使用os.path.normpath进行解析:..

In [93]: os.path.normpath(os.path.join(path1,path2))
Out[93]: '../Source/directory/Common/headerFile.h'
Run Code Online (Sandbox Code Playgroud)