2011-10-26 625 views
3

我的問題幾乎是標題所暗示的。我的研究使我去嘗試這樣的:從python的相對路徑中找到絕對路徑

import os 
pathname = os.path.abspath("some/relative/directory") 
print pathname 

這個問題是,每當我做這樣的事情,它只是返回給我任何相對目錄?我的蟒蛇目錄之前。例如:

C:\ Python27 \一些\相對\目錄

這甚至不是我的計算機上的現有目錄。我明白,python解釋器默認搜索工作目錄,但我想要做的是讓我的整個計算機搜索包含我指定的部分目錄的絕對路徑。

這個的目的是爲我創建一個可以在任何計算機上搜索任意目錄的exe(使用py2exe)。有沒有一種方法可以在標準庫或通過一些可用的模塊中進行 - 或者我需要自己實現算法嗎?

+1

你的意思是你想搜索你的整個硬盤的路徑看起來像那樣?或者是什麼? –

回答

3

abspath基於getcwd。很可能,您當前的工作目錄根本不符合您的期望。

您可以更改啓動腳本的代碼,手動更改目錄,或者在Python中使用chdir

+1

@本,沒有abspath不會做那樣的事情。然後您可能會想到這樣的算法更復雜。例如,你使用了哪一種[樹遍歷]算法(http://en.wikipedia.org/wiki/Tree_traversal)算法,如果有多個匹配項,你會怎麼做,以及如果文件系統發生變化會發生什麼搜索? –

+0

嗯,我很新的python,但我希望有一個現有的算法在某些模塊中...... - 是否有一個簡單的方法返回找到的第一個匹配? – Ben

+0

@Ben,你應該編輯你的問題,並把類似於你刪除的評論。 –

0

你試過os.path.realpath("my/relative/dir")?實際上,這個目錄看起來可能不存在,但如果它確實存在,它將解決符號鏈接和其他問題。

+0

我也試過這個,但它仍然只是返回C:\ Python27 \ my \ relative \ dir - 基本上是C:\ Python27 +我傳入的任何字符串。 – Ben