go

How to get the directory of the currently running file?

natamacm

natamacm

Posted on May 22, 2020

How to get the directory of the currently running file?

The Golang programming language makes it easy to build simple, reliable, and efficient software.

You can get the current directory of the program you are running (run golang).

So how to find out where the executable is?

As usual in programming languages, there are several ways to do this.
It's not Go specific, as you can have the same problem when programming C or C++.

To get the directory of the executable you can use "path/filepath.Dir".

For Go 1.8 and above you can use os.Executable for getting executable path

package main                                                                                                                               

import (                                                                                                                                   
    "fmt"                                                                                                                                  
    "os"                                                                                                                                   
    "path/filepath"                                                                                                                        
)                                                                                                                                          

func main() {                                                                                                                              
    ex, err := os.Executable()                                                                                                             
    if err != nil {                                                                                                                        
        panic(err)                                                                                                                         
    }                                                                                                                                      
    exePath := filepath.Dir(ex)                                                                                                            
    fmt.Println(exePath)                                                                                                                   
}    

An alternative way to do this is with this code, it returns the current working directory:

package main

import (
    "fmt"
    "os"
)

func main() {
    pwd, err := os.Getwd()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println(pwd)
}

You can also do it this way:

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)
}
πŸ’– πŸ’ͺ πŸ™… 🚩
natamacm
natamacm

Posted on May 22, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Where GitOps Meets ClickOps
devops Where GitOps Meets ClickOps

November 29, 2024

How to Use KitOps with MLflow
beginners How to Use KitOps with MLflow

November 29, 2024