Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不展开符号链接的情况下展开相对路径?_Python_Git - Fatal编程技术网

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']
,这样就行了。当我把它与你的建议结合使用时,我应该能够得到我想要的。我不得不这么做有点糟糕