gpt4 book ai didi

file - 转到 : concatenate file contents

转载 作者:IT王子 更新时间:2023-10-29 01:46:28 26 4
gpt4 key购买 nike

我目前正在学习如何使用 Go(或 golang)进行开发,但我遇到了一个奇怪的问题:

我尝试创建一个查看 HTML 文件内部的脚本,以获取每个 标记的所有来源。该脚本的目标是合并所有检索到的文件。

所以,这就是故事:现在,我能够获取每个 JavaScript 文件的内容,但是......我无法连接它们......

你可以在下面看到我的脚本:

//Open main file
mainFilePath := "/path/to/my/file.html"
mainFileDir := path.Dir(mainFilePath)+"/"

mainFileContent, err := ioutil.ReadFile(mainFilePath)

if err == nil {
mainFileContent := string(mainFileContent)
var finalFileContent bytes.Buffer

//Start RegExp searching for JavaScript src
scriptReg, _ := regexp.Compile("<script src=\"(.*)\">")
scripts := scriptReg.FindAllStringSubmatch(mainFileContent,-1)

//For each SRC found...
for _, path := range scripts {
//We open the corresponding file
subFileContent, err := ioutil.ReadFile(mainFileDir+path[1])

if err == nil {
//And we add its content to the "final" variable
fmt.Println(finalFileContent.Write(subFileContent))
} else {
fmt.Println(err)
}
}

//Try to display the final result
// fmt.Println(finalFileContent.String())
fmt.Printf(">>> %#v", finalFileContent)
fmt.Println("Y U NO WORKS? :'(")

} else {
fmt.Println(err)
}

因此,每个 fmt.Println(finalFileContent.Write(subFileContent)) 都显示类似 6161 的内容,所以我假设 Write()方法被正确执行。

但是 fmt.Printf(">>> %#v", finalFileContent) 什么都不显示。绝对没有(甚至“>>>”都没有显示!)上面的注释行也是一样的。

有趣的是字符串"Y U NO WORK ? :'(" 正确显示...

你知道为什么吗?你知道如何解决这个问题吗?

提前致谢!

最佳答案

您忽略了一些错误。当您运行以下版本的代码时,结果如何?

package main

import (
"bytes"
"fmt"
"io/ioutil"
"path"
"regexp"
)

func main() {
//Open main file
mainFilePath := "/path/to/my/file.html"
mainFileDir := path.Dir(mainFilePath) + "/"

mainFileContent, err := ioutil.ReadFile(mainFilePath)

if err == nil {
mainFileContent := string(mainFileContent)
var finalFileContent bytes.Buffer

//Start RegExp searching for JavaScript src
scriptReg, _ := regexp.Compile("<script src=\"(.*)\">")
scripts := scriptReg.FindAllStringSubmatch(mainFileContent, -1)

//For each SRC found...
for _, path := range scripts {
//We open the corresponding file
subFileContent, err := ioutil.ReadFile(mainFileDir + path[1])

if err == nil {
//And we add its content to the "final" variable

// fmt.Println(finalFileContent.Write(subFileContent))
n, err := finalFileContent.Write(subFileContent)
fmt.Println("finalFileContent Write:", n, err)

} else {
fmt.Println(err)
}
}

//Try to display the final result
// fmt.Println(finalFileContent.String())

// fmt.Printf(">>> %#v", finalFileContent)
n, err := fmt.Printf(">>> %#v", finalFileContent)
fmt.Println()
fmt.Println("finalFileContent Printf:", n, err)

fmt.Println("Y U NO WORKS? :'(")

} else {
fmt.Println(err)
}
}

更新:

声明:

fmt.Println("finalFileContent Printf:", n, err)

输出:

finalFileContent Printf: 0 write /dev/stdout: winapi error #8

finalFileContent Printf: 0 write /dev/stdout: Not enough storage is available to process this command.

来自 MSDN:

ERROR_NOT_ENOUGH_MEMORY

8 (0x8)

Not enough storage is available to process this command.

Windows 控制台的格式化输出溢出缓冲区(大约 64KB)。

有一个相关的 Go open issue:

Issue 3376: windows: detect + handle console in os.File.Write

关于file - 转到 : concatenate file contents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785590/

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