Python 如何在不展开符号链接的情况下展开相对路径?
我有这样一条路:Python 如何在不展开符号链接的情况下展开相对路径?,python,git,Python,Git,我有这样一条路: /home/me/work/project/a/b/c 实际上,它使用了一个可怕的符号链接,比如: /home/me/work -> /mnt/device/volume/storage/work/me/ 我正在使用git显示git克隆的顶层,它是: /home/me/work/project 如果我使用: $ git rev-parse --show-toplevel /mnt/device/volume/storage/work/me/project 我得到了
/home/me/work/project/a/b/c
实际上,它使用了一个可怕的符号链接,比如:
/home/me/work -> /mnt/device/volume/storage/work/me/
我正在使用git显示git克隆的顶层,它是:
/home/me/work/project
如果我使用:
$ git rev-parse --show-toplevel
/mnt/device/volume/storage/work/me/project
我得到了完全展开的绝对路径。我不想那样。因此,我可以使用:
$ git rev-parse --show-cdup
../../..
获取到顶部的相对路径的步骤
现在,如果我能找出如何让python将相对路径扩展到:
/home/me/work/project
而不是:
/mnt/device/volume/storage/work/me/project
这可能吗?那么:
>>> import os
>>> os.path.normpath(os.path.join(os.environ['PWD'], '../../..'))
'/home/me/work/project'
os.path.normpath
不遵循符号链接;它甚至不关心文件系统是否存在。它只计算消除双斜线和双点后的标准化路径。想想Python中的几乎所有内容都将为您遍历链接。问题是要获得“/home/me/work/project/a/b/c”,我需要使用os.getcwd()获得它这扩展了符号链接。您如何知道您在/home/me/work/project/a/b/c
位置?这就是我调用正在使用的脚本时的pwd。我需要一个脚本,可以显示当前git repo的顶级,而无需扩展符号链接。在这种情况下,请尝试os.environ['PWD']
,这样就行了。当我把它与你的建议结合使用时,我应该能够得到我想要的。我不得不这么做有点糟糕