@MOTORIST

Как прописать путь к файлу, чтобы запускать программу из разных мест?

t, err := template.ParseFiles("www/index.html")

Если запустить программу из директории программы, то все ок. Если запустить из любого другого места, то ошибка, не может найти index.html (c:\>f:\...\program).

OS Windows7 64
  • Вопрос задан
  • 5228 просмотров
Решения вопроса 1
Может быть нужно просто прописать абсолютный путь к файлу? Как нибудь так:
t, err := template.ParseFiles("C:\path\to\www\index.html")


или для unix-подобных
t, err := template.ParseFiles("/path/to/www/index.html")


Попробуйте вот так:
import (
    "fmt"
    "log"
    "os"
    "path/filepath"
)

func main() {
    dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
    if err != nil {
            log.Fatal(err)
    }
    fmt.Println(dir)
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Тут есть пакет с нужной функцией https://bitbucket.org/kardianos/osext/src
godoc.org/bitbucket.org/kardianos/osext

Должно работать кроссплатформенно.
package main

import (
    "bitbucket.org/kardianos/osext"
    "fmt"
)

func main() {
    filename, _ := osext.Executable()
    fmt.Println(filename)
}
Ответ написан
@SilentFl
ставьте относительные ссылки "./www/index.html" (относительно запускаемого бинарника), либо воспользуйтесь мощью go generate по включению html-кода в код (и тогда для работы программы нужен только бинарник)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы