簡體   English   中英

Python 使用 os.path.join 加入當前目錄和父目錄

[英]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不是那么聰明。

我怎樣才能做到這一點?

您可以使用normpathrealpathabspath

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 - 面向對象的文件系統路徑
  • os.path — 常見的路徑名操作

最近,我發現了 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM