2017-12-03 10 views
3

Im 파일의 내부 깊숙한 폴더 안에 있고 레벨을 2 레벨 위로 가져오고 싶습니다. 다음 api를 보았지만 과 같은 것을 추가하는 방법을 모르겠습니다. " /../ ", 어떤 생각? 예를 들어두 레벨 위로 프로젝트의 루트 폴더를 얻는 방법

dir, err := os.Getwd() 

나는

/Users/i02222333/go/src/myapp/src/test 

에 따라 얻을 그리고 나는 약간의 조작 된 경로 문자열을 절감 할 수

/Users/i02222333/go/src/myapp 

필요하지만, 내 질문이 더 나은 솔루션이 경우 골란과 함께 할 건가요?

당신은이 같은 path 패키지를 사용하여 '../../'의 디렉토리 이름을 얻을 수 있습니다
+0

실행 파일을/Users/i02222333/go/src/myapp'에서 실행하십시오. 소스 코드/프로젝트가 중요하지 않은 곳에서는 중요한 것은 실행 파일을 시작하는 폴더입니다. – tkausl

+0

@tkausl - 테스트 파일 (첫 번째 경로의 끝)에서 명령을 실행하면 거기에 2 레벨의 'myapp'경로를 알아야합니다. 어떻게해야합니까? 당신이 예제를 제공 할 수 있습니까? –

답변

1

:

:

여기

import (
    "fmt" 
    "os" 
    "path" 
) 

func main() { 
    dirname, err := os.Getwd() 
    if err != nil { 
     panic(err) 
    } 

    fmt.Printf("Current directory: %v\n", dirname) 
    dir, err := os.Open(path.Join(dirname, "../../")) 
    if err != nil { 
     panic(err) 
    } 

    fmt.Printf("Name of ../../: %v\n", dir.Name()) 
} 

기본 패키지 내 출력의 예입니다

$ go run main.go 
Current directory: /Users/jack/go/src/stackoverflow/example/directory 
Name of ../../: /Users/jack/go/src/stackoverflow 
+0

파일 경로에'path'보다는'filepath'를 사용해야합니다. 간단한 문자열 연결보다는 합류의 움직임을 겪으려면 거기에'/'분리 기호를 하드 코딩하지 마십시오. – JimB