我是 golang 新手,使用 ioutil.ReadFile(os.Args[1])
从 cli 获取文件路径,然后使用以下方法处理每一行:
package main
import (
"bufio"
"fmt"
"log"
"os"
)
func main() {
file, err := os.Open(os.Args[1])
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}
现在我可以在标准输出中获得输出。但最后也会得到以下错误:
msg:"BRUMBRUM";reference:cve,CVE-2007-2810;reference:blah;
msg:"WAKANDA";reference:cve,CVE-2007-2810;reference:blah; file name too long
exit status 1
我的文件路径输入是data/srulz.tcl
.仅供引用,错误消息不是文本文件的一部分。
我需要知道这里哪里出了问题以及如何改进?
UPDATE:
Provided issue reproducible code.
Go-ing with flag pkg for now until this mystery is solved
最佳答案
在第一行, 文件路径,错误:= ioutil.ReadFile(os.Args[1])
以上步骤将读取整个文件内容并返回 byte slice 段和错误。 filePath 变量不会存储文件路径,而是以字节为单位存储文件内容。我想知道为什么你没有收到编译时错误,因为文件路径变量是 byte slice ,而 os.Open(filepath) os.Open 的参数将是字符串。
关于从 os.Args[1] 读取时 golang 文件名太长错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54963438/