2015-08-23 7 views
6

Bir hizmete API çağrıları yapmak için bir paket yapıyorum.Golang, dosyanın bulunduğu dizinin dizinini nasıl alırsınız, geçerli çalışma dizini değil

Yalnızca API çağrılarını sınamak için kullandığım bir test paketine ve diğer paketin içerdiği include ana paketin işlevlerini test ediyorum. Ben var üzerinde çalışıyorum benim ana pakette

Ben mesela benim test paketinden diyoruz zaman sorun yok, ancak

ioutil.ReadFile(filepath.Abs("Filename.pub"))

/Users/####/gocode/src/github.com/testfolder go run main.go

o arıyor olduğunu bana

panic: open /Users/####/gocode/src/github.com/testfolder/public.pub: no such file or directory

sorundur söyler public.pubtestfolder iç yerine github.com/apipackage/ nerede olduğunu hangi.

Sadece kelimelerin bu karmaşayı açıklığa kavuşturmak için:

API Paketi API paketi dahil ediyorum ve Testfolder CWD çünkü

Ama bunu go run main.go aynı dizinden okuyan bir işlevi vardır bunun yerine, main.go işlevine sahip olmasa bile, sadece testfolder yerine almayı deniyor. kafa karıştırıcı eşek sorusu

cevap

15

runtime.Caller için üzgün

teşekkürler inanıyorum istediğim şey.

package main 

import (
    "fmt" 
    "runtime" 
    "path" 
) 

func main() { 
    _, filename, _, ok := runtime.Caller(0) 
    if !ok { 
     panic("No caller information") 
    } 
    fmt.Printf("Filename : %q, Dir : %q\n", filename, path.Dir(filename)) 
} 

https://play.golang.org/p/vVa2q-Er6D

: Burada

bir tanıtımdır
İlgili konular