gpt4 book ai didi

go - 编码为 CSV,然后在 golang 中 ZIP

转载 作者:行者123 更新时间:2023-12-01 20:25:42 24 4
gpt4 key购买 nike

如何对 CSV 进行编码然后压缩?

有没有办法将一个作家链接到另一个作家?我必须在编写器之间创建一个新缓冲区吗?

var buf bytes.Buffer

zipWriter := zip.NewWriter(&buf)
csvwriter := csv.NewWriter(zipWriter) // <--- zip writer doesn't implement `io.writer`

csvwriter.Write([]string{"a", "b\"fwr", "c"})
csvwriter.Write([]string{"a", "e", "ww"})
csvwriter.Flush()

println(buf.String())

最佳答案

zip 生成具有目录结构的结构化 zip 文件,这意味着您需要独立创建和添加每个文件。

example playground演示了如何添加 CSV 文件。它还演示了打开压缩的 zip 文件并枚举文件。


如果你想gzip文件作为一个压缩流,比如:

$ gzip somefile.csv

生成somefile.csv.gz

然后您可以按照 playground 的说明执行以下操作

package main

import (
"bytes"
"compress/gzip"
"encoding/csv"
"fmt"
"io/ioutil"
)

func main() {
var buf bytes.Buffer

zipWriter := gzip.NewWriter(&buf)
csvwriter := csv.NewWriter(zipWriter)

csvwriter.Write([]string{"a", "b\"fwr", "c"})
csvwriter.Write([]string{"a", "e", "ww"})
csvwriter.Flush()
zipWriter.Flush()
zipWriter.Close()

fmt.Println(buf.Bytes())
zipReader, _ := gzip.NewReader(bytes.NewReader(buf.Bytes()))
d, err := ioutil.ReadAll(zipReader)
if err != nil {
fmt.Println("err", err)
}
fmt.Println(string(d))
}

关于go - 编码为 CSV,然后在 golang 中 ZIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59417897/

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