在Python3.4(也2.6),使用os.path.relpath CMD,我得到不同的答案,如果我跑:
os.path.relpath("~/foo/bar.txt", "~")
比我跑
os.path.relpath("~/foo/bar.txt", "/home/<username>/")
(這裏我用我的用戶名替換<username>
,自然!)Python的relpath /家庭/ <username>主場迎戰〜
也就是說,如果我在我的主目錄是,在第一種情況下,我得到
foo/bar.txt
(如我所期望的),但在這些cond case我得到
~/foo/bar.txt
這不是我所期望的,因爲〜正好是/home/<username>
。 (我在第二種情況下獲得了相同的結果,無論我在第二個參數中是否包含尾隨的'/')。
第二種情況給出了更奇怪的結果,如果我在主目錄的子目錄中運行此結果,說〜/數據/:
Data/~/foo/bar.txt
哪些除非我誤會是一個不存在的目錄。
我可以找出解決這個問題的辦法,但是爲什麼會這樣呢?我不認爲這是一個錯誤,因爲它已經存在很長時間了。
謝謝,這回答我的「更奇怪的結果」的問題;我猜這畢竟不是那麼奇怪。 –
(堅果,試圖編輯它,但我太慢了。)但我真的想要從我的家庭目標得到一個相對路徑,而「〜」實際上給了我我期待的答案。那麼爲什麼它不給我一個相對於我的家庭目錄的路徑,如果我把它作爲第二個參數/ home/?爲什麼Python會粘在「〜」中?這似乎不是相對路徑。 (或者換句話說,我如何從我的主目錄中得到一個relpath到一個文件?) –
@MikeMaxwell:如果Python看起來像一個'〜',那意味着你有一個'〜'投入。在傳遞給'relpath'之前在輸入上的'expandhome'應該替代你。另外,在'expandhome'之後和'relpath'之前通過'abspath'運行輸入可能會有所幫助。 – icktoofay