在閱讀os.path.join()方法的聯機文檔之後,以下情況似乎應該限定,但顯然不適用。我是否正確閱讀該文檔?從Python的os.path.join改正結果()
>>> import os
>>>
>>> os.path.join("/home/user", "/projects/pyproject", "mycode.py")
>>> '/projects/pyproject/mycode.py'
試圖尾隨和領導os.sep在第一和第二路徑的不同組合後,似乎第二個路徑的加入不能有它的第一個字符開始的os.sep。
>>> os.path.join("/home/user", "projects/pyproject", "mycode.py")
>>> '/home/user/projects/pyproject/mycode.py'
在PATH1和PATH2是從,比如說份的情況下,用戶輸入裝置編寫代碼來解析其輸入爲該主導os.sep。
從python.org在線參考:
os.path.join(path1[, path2[, ...]])
加入一個或多個路徑組件 智能化。如果任何組件是絕對路徑,則所有先前的 組件(在Windows上,包括上一個驅動器盤符,如果存在 是其中的一個)將被丟棄,並繼續加入。返回值是 的連接點path1
,以及可選的path2
等,其中 一個目錄分隔符(os.sep
)後面的每個非空部分除了最後一個 。 (這意味着空的最後部分將導致以分隔符結尾的路徑 )。請注意,在Windows上,由於每個驅動器都有一個 當前目錄,因此os.path.join("c:", "foo")
代表 相對於驅動器上當前目錄的路徑C:
(c:foo
),而不是c:\foo
。
我明白了,謝謝。我認爲以前的「組件」被拋出將是os.sep而不是整個路徑。 – 2012-08-08 22:08:26