2013-12-18 127 views
0

我有一個路徑,如:如何擴展相對路徑而不擴展符號鏈接?

/home/me/work/project/a/b/c 

其中,實際上是使用一個可怕的符號鏈接,如:

/home/me/work -> /mnt/device/volume/storage/work/me/ 

我使用Git來顯示混帳克隆這是頂級:

/home/me/work/project 

如果我使用:

$ git rev-parse --show-toplevel 
/mnt/device/volume/storage/work/me/project 

我得到完整展開的絕對路徑。我不想那樣。所以,我可以使用:

$ git rev-parse --show-cdup 
../../.. 

,以獲得相對路徑頂端

現在,我只是喜歡它,如果我能figue如何獲得蟒蛇擴大到相對路徑:

/home/me/work/project 

代替:

/mnt/device/volume/storage/work/me/project 

這可能嗎?

+0

認爲Python中的所有內容都會遍歷鏈接。 – agf

回答

1

如何:

>>> import os 
>>> os.path.normpath(os.path.join(os.environ['PWD'], '../../..')) 
'/home/me/work/project' 

os.path.normpath不遵循符號鏈接;它甚至不關心文件系統是否存在。它只是計算消除雙斜線和雙點後標準化路徑將是

+0

問題是要得到'/ home/me/work/project/a/b/c',我需要用os.getcwd()來擴展符號鏈接。 – dusktreader

+0

那你怎麼知道你在'/ home/me/work/project/a/b/c'的位置呢? – unutbu

+0

這是我調用我正在使用的腳本時的密碼。我需要一個腳本,可以顯示當前git倉庫的頂層而不擴展符號鏈接。 – dusktreader