我希望在Golang中打开给定的文件"directory/subdirectory/file.txt"
。如何以OS无关的方式表示此类路径(例如,在Windows中使用反斜杠,在Mac和Linux中使用正斜杠)?类似于Python的os.path
模块?
要直接创建和操作特定操作系统的路径,可以使用 os.PathSeparator
和 path/filepath
包。
另一种方法是在程序中始终使用 '/'
和 path
包。无论操作系统如何,path
包都将 '/'
作为路径分隔符。在打开或创建文件之前,通过调用 filepath.FromSlash(path string)
将 / 分隔的路径转换为特定操作系统的路径字符串。通过调用 filepath.ToSlash(path string)
可以将操作系统返回的路径转换为 / 分隔的路径。
使用path/filepath
代替path
。 path
仅适用于以前向斜杠分隔的路径(例如在URL中使用的路径),而path/filepath
可跨不同操作系统操作路径。
示例:
package main
import (
"fmt"
"path/filepath"
)
func main() {
path := filepath.Join("home", "hello", "world.txt")
fmt.Println(path)
}
Go Playground: https://go.dev/play/p/2Fpb_vJzvSb
根据 @EvanShaw 的回答和 这篇博客,创建了以下代码:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
p := filepath.FromSlash("path/to/file")
fmt.Println("Path: " + p)
}
返回:
Path: path\to\file
在Windows上。
Go语言将正斜杠(/
)作为所有平台的通用分隔符[1]。无论运行操作系统如何,"directory/subdirectory/file.txt"
都可以正确地打开。