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

标签 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)
    }
}

现在我可以在标准输出中获得输出。但最后也会得到以下错误:

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/

相关文章:

postgresql - 在 Go 中用于数据库迁移的包是什么?

ide - LiteIDE 构建后无法运行代码,进程启动失败

list - 检查nil指针取消引用的正确方法是什么?

oracle - Golang用的是JDBC还是ODBC或者什么连接类型

json - 我可以从 http.ResponseWriter 获得 io.Writer 吗?

无互斥

go - 二进制字符串转十六进制

html - GoLang - 带有 HTML 的 XmlPath 选择器

go - 从代码内与外部应用程序交互

concurrency - 比较 2 张 map 的元素 - 我这样做对吗?