2017-11-23 1 views
1

상대 경로를 생성하기 위해 파이썬 코드를 작성하고 있습니다. 상황을 고려해야합니다.Python의 상대 경로

  1. 같은 폴더 아래. 내가 원하는 "." 또는 ". \", 두 tham은 나를 위해 괜찮습니다.
  2. 기타 폴더. ". \ xxx \"및 ".. \ xxx \ xxx \"와 같은 내용을 원합니다.

os.path.relpath()는 상대 경로를 시작하지만 끝에는 \ . os.path.join (dirname, "")을 사용하여 끝에 \를 추가 할 수 있습니다. 하지만 ".. \ xxx \ xxx \"같은 폴더 아래에있을 때 첫 번째 경우에 영향을 미치지 않고 시작 부분에 ". \"를 추가하는 방법을 알아낼 수 없습니다.

+0

백 슬래시 ?? 아, Windows 사용자 ... –

답변

0

그것은 상대 경로에게 줄 것이다

import os 
dir = os.path.dirname(__file__) 
filename = os.path.join(dir,'Path') 
0

relpath() 함수 (초 파라미터)에서 시작하도록 적당한 염기 주어진 ".."문법을 생성한다. 예를 들어 상대 경로를 사용하여 코드를 생성하는 스크립트 생성기와 같은 것을 작성한다고 가정 할 때, 작업 디렉토리가 relpath()의 두 번째 매개 변수 인 경우 아래와 같이 코드에서 프로젝트의 다른 파일을 참조하려는 경우 한 레벨 위와 두 개의 깊은 디렉토리라면 "../blah/blah"를 얻을 것입니다. 같은 폴더에 경로를 접두어로 넣으려는 경우 "."를 사용하여 간단하게 결합 할 수 있습니다. 올바른 OS 고유의 구분 기호가있는 경로가 생성됩니다.

print(os.path.relpath("/foo/bar/blah/blah", "/foo/bar/baz")) 
>>> ../blah/blah 

print(os.path.join('.', 'blah')) 
>>> ./blah  
+1

답변을 더 많이 지원할 수 있도록 코드 스 니펫을 추가하는 것만으로도 좋은 대답 인 것 같습니다. – aloisdg

+0

필자는 꽤 자명 한 것으로 생각했지만 어쨌든 relpath() 함수는 적절한 기본 값 (두 번째 매개 변수)에서 시작하여 ".."구문을 생성합니다. 예를 들어 작업 디렉토리가 두 번째 매개 변수가 나타내는대로이고 코드에서 프로젝트의 다른 파일을 한 레벨 위와 두 개의 디렉토리 아래에서 참조하려는 경우 "../blah/blah"가 표시됩니다. 같은 폴더에 접두어를 붙이려는 경우 "."을 사용하여 조인을 할 수 있습니다. 올바른 OS 고유의 구분 기호가있는 경로가 생성됩니다. – Todd

+0

답안에 기재하십시오;) – aloisdg