gpt4 book ai didi

go - ioutil.ReadFile - 没有这样的文件或目录

转载 作者:行者123 更新时间:2023-12-01 22:31:04 34 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





404 page not found - Go rendering css file

(1 个回答)



No such file or directory error in golang

(3 个回答)



How to use go template to parse html files with FuncMap

(1 个回答)



how to reference a relative file from code and tests

(3 个回答)


去年关闭。




对于以下代码:

package main

import (
"fmt"
"io/ioutil"
"strings"
)

func main() {
b, err := ioutil.ReadFile("shakespeare.txt")

if err != nil {
fmt.Print(err)
}

str := string(b)

text := strings.Split(str, " ")
fmt.Print(len(text))
}

下面是错误:
code$
code$
code$ ls src/github.com/myhub/cs61a/
caching counters expressions gomap lab_00 Main.go Readme.md shakespeare.txt
code$
code$ go run src/github.com/myhub/cs61a/Main.go
open shakespeare.txt: no such file or directory1code$
code$
code$

如何引用位于 Main.go 相同目录位置的文本文件?

最佳答案

使用 go run 运行 Go 程序的一个问题命令是构建的可执行二进制文件的目录是不是 在您的“Main.go”文件所在的同一目录中。

例如,这是一个打印二进制文件目录的程序:

func main() {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}

fmt.Println(dir)
}

这在我的笔记本电脑上输出:
go run Main.go
/var/folders/2v/7n_r3hf539x6f6kf0m2zn5z40000gp/T/go-build855783190/b001/exe

您可以先构建二进制文件并将其放置在与您的文件相同的目录中。

go build -o myapp Main.go

现在我们可以打印二进制文件所在的实际目录:

./myapp
/Users/james/Desktop

如果您需要对程序中的文件名进行硬编码,并假设它与您的二进制文件位于同一目录中,您现在可以这样做:

func main() {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}

path := filepath.Join(dir, "shakespeare.txt")
b, err := ioutil.ReadFile(path)
if err != nil {
log.Fatal(err)
}

str := string(b)
text := strings.Split(str, " ")
fmt.Println(len(text))
}

同样,构建然后运行二进制文件(我刚刚在名为“shakespeare.txt”的测试文件中添加了两个词)。

go build -o myapp Main.go
./myapp
2

另一种选择是让您的程序接受要读取的文件路径作为参数。这样,您的二进制文件或文件所在的位置并不重要,因为您直接将其传入。

func main() {
b, err := ioutil.ReadFile(os.Args[1])
if err != nil {
log.Fatal(err)
}

str := string(b)
text := strings.Split(str, " ")
fmt.Println(len(text))
}

你可以用 go run 运行它或者像以前一样先构建它:

go run Main.go ~/Desktop/shakespeare.txt
2

关于go - ioutil.ReadFile - 没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61536104/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com