Go 戈朗罐头';无法写入文本文件:句柄无效
大家好, 很抱歉这么快又问了另一个问题,但最近围棋似乎是一件接一件的事情 我有一个工作网页刮板(感谢大家的帮助),可以从这个wiki页面获取我想要的所有信息: 然后它显示我想要的一切,没有打嗝。但是,当我写入.txt文件时,会出现一个错误:“0 write mh4u.txt:句柄无效” 以下是我目前的代码供参考:Go 戈朗罐头';无法写入文本文件:句柄无效,go,Go,大家好, 很抱歉这么快又问了另一个问题,但最近围棋似乎是一件接一件的事情 我有一个工作网页刮板(感谢大家的帮助),可以从这个wiki页面获取我想要的所有信息: 然后它显示我想要的一切,没有打嗝。但是,当我写入.txt文件时,会出现一个错误:“0 write mh4u.txt:句柄无效” 以下是我目前的代码供参考: package main import ( "fmt" "log" "github.com/PuerkitoBio/goquery" "os"
package main
import (
"fmt"
"log"
"github.com/PuerkitoBio/goquery"
"os"
"io"
)
func main() {
filename := "mh4u.txt"
file, err := os.Create(filename)
if err!= nil {
fmt.Println(err)
}
doc, err := goquery.NewDocument("http://www.ign.com/wikis/monster-hunter-4/Items")
if err != nil {
log.Fatal(err)
}
doc.Find("tbody").Each(func(i int, s *goquery.Selection) {
s.Find("td").Each(func(j int, s2 *goquery.Selection) {
if s3 := s2.Find("img"); s3 != nil && s3.Length() > 0 {
return
}
fmt.Printf(s2.Text())
n, err := io.WriteString(file, s2.Text())
if err != nil {
fmt.Println(n, err)
}
})
file.Close()
})
}
在其他网站上测试这段代码让我相信可能有一些隐藏的字符给了作者一些问题,但这是我唯一能猜到的
非常感谢您提供的任何建议/提示/解决方案 您正在闭包内调用
file.Close()
。如果doc.Find(“tbody”)。每个都被调用了不止一次,那么您将尝试写入一个关闭的文件。创建文件后,应立即延迟关闭文件:
file, err := os.Create(filename)
if err != nil {
log.Fatal(err)
}
defer file.Close()
哇!我真的应该学会什么时候停止工作,休息一下。非常感谢!