我是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)
}
}
现在我可以在stdout获得输出。但最后还会得到以下错误:
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
。仅供参考,错误消息不是文本文件的一部分。
我需要知道这是哪里出了问题,如何改善?
更新:
提供的问题可复制代码。
暂时带着pkg标志,直到这个谜题解决为止
答案 0 :(得分:1)
在第一行中 filePath,错误:= ioutil.ReadFile(os.Args [1])
以上步骤将读取整个文件的内容,并返回字节和错误的片段。 filePath变量将不存储文件路径,而是以字节为单位存储文件内容。我想知道为什么您没有得到编译时错误,因为filepath变量是字节片,而os.Open(filepath)的os.Open参数将是字符串。