[python] 부모 디렉토리 위치를 얻는 방법

이 코드는 b.py에서 templates / blog1 / page.html을 얻습니다.

path = os.path.join(os.path.dirname(__file__), os.path.join('templates', 'blog1/page.html'))

하지만 부모 디렉토리 위치를 얻고 싶습니다.

aParent
   |--a
   |  |---b.py
   |      |---templates
   |              |--------blog1
   |                         |-------page.html
   |--templates
          |--------blog1
                     |-------page.html

부모의 위치를 ​​얻는 방법

감사

업데이트 :

이것은 맞다 :

dirname=os.path.dirname
path = os.path.join(dirname(dirname(__file__)), os.path.join('templates', 'blog1/page.html'))

또는

path = os.path.abspath(os.path.join(os.path.dirname(__file__),".."))



답변

dirname을 반복해서 적용하여 더 높아질 수 있습니다 dirname(dirname(file)).. 그러나 이것은 루트 패키지까지만 가능합니다. 이것이 문제인 경우 다음을 사용 os.path.abspath하십시오 dirname(dirname(abspath(file)))..


답변

os.path.abspath아무것도 확인하지 않으므로 이미 문자열을 추가하는 __file__경우 귀찮 dirname거나 조인 할 필요가 없습니다 . __file__디렉토리로 취급 하고 등반을 시작하십시오.

# climb to __file__'s parent's parent:
os.path.abspath(__file__ + "/../../")

그보다 훨씬 덜 복잡합니다 os.path.abspath(os.path.join(os.path.dirname(__file__),"..")) 관리하기dirname(dirname(__file__)) 합니다. 두 단계 이상의 등반은 말도 안되게 시작됩니다.

그러나 얼마나 많은 레벨을 올라갈 지 알기 때문에 간단한 작은 기능으로 이것을 정리할 수 있습니다.

uppath = lambda _path, n: os.sep.join(_path.split(os.sep)[:-n])

# __file__ = "/aParent/templates/blog1/page.html"
>>> uppath(__file__, 1)
'/aParent/templates/blog1'
>>> uppath(__file__, 2)
'/aParent/templates'
>>> uppath(__file__, 3)
'/aParent'


답변

Python 3.4 이상 에서 모듈 과 상대 경로 를 사용하십시오 pathlib.

from pathlib import Path

Path(__file__).parent

여러 통화를 사용 parent하여 경로를 더 진행할 수 있습니다 .

Path(__file__).parent.parent

parent두 번 지정하는 대신 다음을 사용할 수 있습니다.

Path(__file__).parents[1]


답변

os.path.dirname(os.path.abspath(__file__))

경로를 알려줘야합니다 a.

그러나 b.py현재 실행중인 파일 인 경우 다음을 수행하여 동일한 결과를 얻을 수 있습니다

os.path.abspath(os.path.join('templates', 'blog1', 'page.html'))


답변

os.pardir../더 읽기 쉽고 읽기 쉬운 방법입니다 .

import os
print os.path.abspath(os.path.join(given_path, os.pardir))  

given_path의 부모 경로를 반환합니다


답변

간단한 방법은 다음과 같습니다.

import os
current_dir =  os.path.abspath(os.path.dirname(__file__))
parent_dir = os.path.abspath(current_dir + "/../")
print parent_dir


답변

..부모 폴더의 부모를 얻기 위해 두 폴더에 가입 할 수 있습니까?

path = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..",".."))