2011-01-07 81 views
0

從文檔:Python的os模塊路徑功能

os.path.realpath(path) 
Return the canonical path of the specified filename, eliminating any 
symbolic links encountered in the path (if they are supported by the 
operating system). 

當我調用這與現存的文件的名字,我得到它的路徑:/home/myhome/myproject

當我用'nonsense.xxx'字符串參數調用這個參數時,我仍然得到一條到/home/myhome/myproject/nonsense.xxx的路徑。這有點不一致,因爲它看起來像nonsense.xxx被認爲是一個不是文件的目錄(儘管它不是:它不存在)。

當我用空字符串文件名調用此函數時,我仍然得到/home/myhome/myproject的路徑。

當文檔對realpath()說得太少時,我該如何解釋這種行爲? (我正在使用Python 2.5。)

編輯:有人提出了一種測試文件是否存在的方法。我關心的不是測試文件是否存在。我的關注是解釋行爲。

回答

2

os.path對文件是否存在不感興趣。它只關心構建路徑。

realpath消除公式中已知的符號鏈接,但不存在的目錄被假定爲路徑的有效元素。

+1

os.path doc說:「這個模塊在路徑名上實現了一些有用的功能」。它並沒有說os.path.realpath()會返回一個路徑,不管你發送了什麼垃圾。但是,這似乎是它的作用。 – H2ONaCl 2011-01-07 05:36:34

0

在調用之前放置諸如「os.path.isfile(x)」,「x is not」和「os.path.isdir(x)」的測試嗎?

2

不是猜測,只是閱讀代碼!它在你的python安裝中。或瀏覽here,它只有14行減去評論。