[英]Python joining current directory and parent directory with os.path.join
我想加入當前目錄路徑和目錄樹中某個位置的相對目錄路徑goal_dir
,所以我得到了goal_dir
的絕對路徑。 這是我的嘗試:
import os
goal_dir = os.path.join(os.getcwd(), "../../my_dir")
現在,如果當前目錄是C:/here/I/am/
,它將它們連接為C:/here/I/am/../../my_dir
,但我想要的是C:/here/my_dir
。 似乎os.path.join
不是那么聰明。
我怎樣才能做到這一點?
您可以使用normpath 、 realpath或abspath :
import os
goal_dir = os.path.join(os.getcwd(), "../../my_dir")
print goal_dir # prints C:/here/I/am/../../my_dir
print os.path.normpath(goal_dir) # prints C:/here/my_dir
print os.path.realpath(goal_dir) # prints C:/here/my_dir
print os.path.abspath(goal_dir) # prints C:/here/my_dir
考慮使用os.path.abspath
這將評估絕對路徑
或者可以使用os.path.normpath
這將返回規范化路徑(規范化路徑,消除雙斜杠等)
應根據要求選擇這些功能之一
在abspath
的情況下,在您的示例中,您不需要使用os.path.join
os.path.abspath("../../my_dir")
如果您對相對路徑感興趣,則應使用os.path.normpath
。
>>> os.path.normpath("../my_dir/../my_dir")
'../my_dir'
處理文件路徑的其他參考資料:
最近,我發現了 pathlib。
from pathlib import Path
cwd = Path.cwd()
goal_dir = cwd.parent.parent / "my_dir"
或者,使用當前腳本的文件:
cwd = Path(__file__).parent
goal_dir = cwd.parent.parent / "my_dir"
在這兩種情況下,都可以像這樣找到簡化形式的絕對路徑:
goal_dir = goal_dir.resolve()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.