39

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それほど知的ではないようです。

これどうやってするの?

4

3 に答える 3

47

normpathrealpathまたは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
于 2013-06-25T10:38:02.987 に答える
10

これを使用することを検討する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 — 一般的なパス名操作
于 2013-06-25T10:38:18.097 に答える