如何在golang中将相对路径解析为绝对路径?
节点中是否存在类似于“path.resolve”的api?或者什么东西也能做到 例如(nodejs代码):如何在golang中将相对路径解析为绝对路径?,go,io,path,Go,Io,Path,节点中是否存在类似于“path.resolve”的api?或者什么东西也能做到 例如(nodejs代码): path.resolve(“~/sample.sh”) 应该得到:/home/currentuser/sample.sh解析~(表示用户家)是另一个故事,通常是shell解决了这个问题。有关详细信息,请参阅 如果要从Go code执行此操作,可以使用此函数获取当前用户的详细信息,包括其主文件夹,即user.HomeDir。但是,你还是得自己处理更换这个 原来的答案如下 您可以使用或 例如
path.resolve(“~/sample.sh”)
应该得到:/home/currentuser/sample.sh
解析~
(表示用户家)是另一个故事,通常是shell解决了这个问题。有关详细信息,请参阅
如果要从Go code执行此操作,可以使用此函数获取当前用户的详细信息,包括其主文件夹,即user.HomeDir
。但是,你还是得自己处理更换这个
原来的答案如下
您可以使用或 例如:
base := "/home/bob"
fmt.Println(path.Join(base, "work/go", "src/github.com"))
fmt.Println(filepath.Abs("/home/bob/../alice"))
输出:
/home/bob/work/go/src/github.com
您可以使用和从路径中“删除”点
和双点。
您可以使用解析相对路径并获取绝对路径(如果工作目录不是绝对路径,则在其前面加上前缀)filepath.Abs()
还对结果调用Clean()
例如:
base := "/home/bob"
fmt.Println(path.Join(base, "work/go", "src/github.com"))
fmt.Println(filepath.Abs("/home/bob/../alice"))
产出:
/home/alice <nil>
/home/alice
试一下上面的例子
请参阅相关问题:这似乎是在转移注意力-
Join
与提出的问题无关,也与Clean
无关。直到最后3段或之前,问题才得到解决。@Adrian问题的第一个版本没有提到解决~
,只是解决路径。但是,是的,它们不再相关了。啊,很公平,我没有看到它被编辑过。@Adrian编辑了答案,让它变得明显。从技术上讲,这不是绝对的,这是波浪扩展~/sample.sh
是一个绝对路径(它所指的内容不会根据CWD而改变)。波浪号只是用户(绝对)主目录路径的快捷方式。可能与