我想在golang中打开一个给定的文件"directory/subdirectory/file.txt"
。以OS无关的方式表达这种路径的推荐方法是什么(即Windows中的反斜杠,Mac和Linux中的正斜杠)?像Python的os.path
模块?
答案 0 :(得分:45)
要创建和操作特定于操作系统的路径,请直接使用os.PathSeparator
和path/filepath
包。
另一种方法是在整个程序中始终使用'/'
和path
包。无论操作系统如何,path
包都使用'/'
作为路径分隔符。在打开或创建文件之前,请通过调用filepath.FromSlash(path string)
将/ -separated路径转换为特定于操作系统的路径字符串。可以通过调用filepath.ToSlash(path string)
将操作系统返回的路径转换为/ -separated路径。
答案 1 :(得分:21)
使用path/filepath
代替path
。 path
仅用于正斜杠分隔的路径(例如URL中使用的路径),而path/filepath
则操纵不同操作系统的路径。
答案 2 :(得分:8)
根据@EvanShaw和this blog的答案,创建了以下代码:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
p := filepath.FromSlash("path/to/file")
fmt.Println("Path: " + p)
}
返回:
Path: path\to\file
在Windows上。
答案 3 :(得分:0)
Go将正斜杠(/
)视为所有平台[1]的通用分隔符。无论运行时操作系统如何,都将正确打开"directory/subdirectory/file.txt"
。