亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用范圍循環迭代時將條目寫入 CSV 文件時出現問題

使用范圍循環迭代時將條目寫入 CSV 文件時出現問題

Go
守候你守候我 2022-12-19 21:21:43
在此代碼中,我試圖讀取目錄中的書名,然后將它們寫入 CSV 文件,但它只將第一本書名寫入 CSV 文件。我不知道如何讓它進一步工作。package mainimport (    "encoding/csv"    "io/ioutil"    "log"    "os")func main() {    files, err := ioutil.ReadDir("/home/bilal/Documents/Books/English")    if err != nil {        log.Fatal(err)    }    csvFile, err := os.Create("English.csv")    if err != nil {        log.Fatal(err)    }    for _, file := range files {        // fmt.Println(file.Name())        fileData := []string{            file.Name(),        }        csvWriter := csv.NewWriter(csvFile)        csvWriter.Write(fileData)        csvWriter.Flush()        csvFile.Close()    }}
查看完整描述

1 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

問題是你在循環內關閉文件,所以在第一次迭代之后它已經關閉了。此外,無需csvWriter在循環內創建,您可以創建一個并在循環后刷新它。請注意,您可以在創建文件句柄和編寫器后立即使用defer 語句設置清理代碼(這樣,您不必擔心在控制流可能從函數返回的任何地方顯式包含清理代碼). 在離開函數之前,defer 語句將以相反的順序執行,因此在下面的示例中csvWriter.Flush()將按預期執行 before csvFile.Close():


// ...

csvFile, err := os.Create("English.csv")

if err != nil {

    log.Fatal(err)

}

defer csvFile.Close()


csvWriter := csv.NewWriter(csvFile)

defer csvWriter.Flush()


for _, file := range files {

    fileData := []string{ file.Name() }

    csvWriter.Write(fileData)

}

// ...


查看完整回答
反對 回復 2022-12-19
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號