从os.Args [1]读取时,golang文件名过长错误

时间:2019-03-02 22:00:13

标签: go

我是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标志,直到这个谜题解决为止

1 个答案:

答案 0 :(得分:1)

在第一行中 filePath,错误:= ioutil.ReadFile(os.Args [1])

以上步骤将读取整个文件的内容,并返回字节和错误的片段。 filePath变量将不存储文件路径,而是以字节为单位存储文件内容。我想知道为什么您没有得到编译时错误,因为filepath变量是字节片,而os.Open(filepath)的os.Open参数将是字符串。