Go语言程序获取当前工作目录


Go 语言拥有大量的内置包来处理目录。应用程序运行所在的目录称为当前工作目录。我们可以使用 Go 语言的 OS 包和 path/filepath 包来获取当前工作目录。在 OS 包中,我们可以使用 os.Getwd() 函数获取当前工作目录。而在 path/filepath 包中,我们可以使用 filepath.Abs 和 filepath.Dir 来获取当前工作目录的文件路径。

方法一:使用 os.Getwd() 函数

此方法使用 os 包中的 os.Getwd 函数来获取当前工作目录。如果出现问题,错误消息将打印到标准输出。否则,标准输出将打印当前工作目录。请查看代码和算法以了解其工作原理。

语法

os.Getwd()

在 Go 编程语言中,可以使用 os.Getwd 函数获取进程的当前工作目录。该函数返回一个字符串,表示当前工作目录的绝对路径。

算法

  • 步骤 1 − 创建一个 main 包,并在程序中声明 fmt(格式化包)和 os 包,其中 main 生成可执行代码,fmt 帮助格式化输入和输出。

  • 步骤 2 − 在此步骤中,使用 os.Getwd() 函数获取当前工作目录。

  • 步骤 3 − 如果 err != nil,则表示在获取当前工作目录时发生错误。

  • 步骤 4 − 如果没有发生错误,则当前工作目录将打印到控制台。

  • 步骤 5 − 使用 fmt.Println() 函数在控制台上执行打印语句,其中 ln 表示换行。

示例

在此示例中,我们将使用 os 包的 os.Getwd 函数来执行程序。

package main
import (
   "fmt"
   "os"    //import fmt and os package
)

func main() {
   directory, err := os.Getwd()    //get the current directory using the built-in function
   if err != nil {
      fmt.Println(err) //print the error if obtained
   }
   fmt.Println("Current working directory:", directory) //print the required directory
}

输出

Current working directory: /Users/username/go/src/example

方法二:使用 path/filepath 包

在此示例中,filepath.Abs 和 filepath.Dir 方法用于查找当前正在运行的可执行文件所在的目录的绝对路径。这些函数可以使用 os.Args[0] 值(表示当前正在运行的可执行文件的名称)来确定当前工作目录。

语法

filepath.Abs

在 Go 中,filepath.Abs 函数返回给定文件路径的绝对表示。它接受一个参数,一个表示文件路径的字符串,并返回相对于当前工作目录解析的路径的绝对表示。

filepath.dir

Go 中的 filepath.Dir 方法返回文件路径的目录组件。它只需要一个参数,一个表示文件路径的字符串,它输出文件路径的领先目录组件。

算法

  • 步骤 1 − 创建一个 main 包,并在程序中声明 fmt(格式化包)和 os 包,其中 main 生成可执行代码,fmt 帮助格式化输入和输出。

  • 步骤 2 − 使用 filepath.Dir 函数作为输入调用 filepath.Abs 函数,并将结果赋给 directory 变量。

  • 步骤 3 − 如果没有错误,则当前工作目录将打印到控制台。

  • 步骤 4 − 如果发现错误,则将使用 log.Fatal 记录到控制台。

示例

在此示例中,我们将使用 path/filepath 包来在 Go 语言中获取当前工作目录。

package main
import (
   "log"
   "os"
   "path/filepath"
)

func main() {
   directory, err := filepath.Abs(filepath.Dir(os.Args[0]))  //get the current working directory
   if err != nil {
      log.Fatal(err)   //print the error if obtained
   }
   log.Println("Current working directory:", directory) //print the current working directory
}

输出

Current working directory: /Users/username/go/src/example

结论

我们使用两个示例执行了获取当前工作目录的程序。在第一个示例中,我们使用了 os.Getwd() 函数,在第二个示例中,我们使用了 path/filepath 包来执行程序。

更新于:2023年2月22日

6K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告