返回顶部
首页 > 资讯 > 后端开发 > GO >读取位于密码保护 zip 文件中的 CSV 文件
  • 837
分享到

读取位于密码保护 zip 文件中的 CSV 文件

2024-04-04 23:04:23 837人浏览 泡泡鱼
摘要

大家好,今天本人给大家带来文章《读取位于密码保护 zip 文件中的 CSV 文件》,文中内容主要涉及到,如果你对golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

大家好,今天本人给大家带来文章《读取位于密码保护 zip 文件中的 CSV 文件》,文中内容主要涉及到,如果你对golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

我有这样的链接:https://storage.Googleapis.com/data/test_file.csv.zip 内容是带有密码的受保护 zip 中的一个 csv 文件。如何从 csv 读取数据?

我已经尝试过这个但它的错误

func ReadCSVZIPFromURL(fileURL string) (data [][]string, err error) {
    resp, err := Http.Get(fileURL)
    if err != nil {
        return data, errors.AddTrace(err)
    }
    defer resp.Body.Close()

    r, err := zip.OpenReader(resp.Body)
    if err != nil {
        log.Fatal(err)
    }
    defer r.Close()

    for _, file := range r.File {
        if file.IsEncrypted() {
            file.SetPassword("passWord")
        }
        reader := csv.NewReader(file)

        data, err := reader.ReadAll()
    }

    return data, nil
}


正确答案


我已经解决了这个问题,这就是解决方案。我们的想法是,我们将字节复制到 zip 阅读器,然后我们将得到 ioreader,我们使用 csv 库读取 ioreader。 为了使用密码加密和解密数据,我们使用这个库“GitHub.com/alexmullins/zip”

func GetCSVFromZipURL(ctx context.Context, fileURL, filePassword string) (ioReader io.Reader, err error) {
    span, ctx := tracer.StartSpanFromContext(ctx)
    defer span.Finish()

    resp, err := http.Get(fileURL)
    if err != nil {
        return ioReader, errors.AddTrace(err)
    }
    defer resp.Body.Close()

    buf := &bytes.Buffer{}

    _, err = io.Copy(buf, resp.Body)
    if err != nil {
        return ioReader, errors.AddTrace(err)
    }

    b := bytes.NewReader(buf.Bytes())
    r, err := zip.NewReader(b, int64(b.Len()))
    if err != nil {
        return ioReader, errors.AddTrace(err)
    }

    for _, f := range r.File {
        if f.IsEncrypted() {
            f.SetPassword(filePassword)
        }
        ioReader, err = f.Open()
        if err != nil {
            return ioReader, errors.AddTrace(err)
        }

        return ioReader, nil
    }

    return ioReader, nil
}

func getUserBenefitListFromCSV(ioReader io.Reader) (userBenefitList []UserBenefit, err error) {
    reader := csv.NewReader(ioReader)

    row := 1
    for {
        csvRowsStr, err := reader.Read()
        if err == io.EOF {
            break
        }
        if err != nil {
            return userBenefitList, errors.AddTrace(err)
        }

        // check if 1st row (header), skip
        if row == 1 {
            row++
            continue
        }

        if len(csvRowsStr) > 0 {
            userID, err := strconv.ParseInt(csvRowsStr[0], 10, 64)
            if err != nil {
                return userBenefitList, errors.AddTrace(err)
            }

            catalogID := 0
            if len(csvRowsStr) > 1 {
                catalogID, err = strconv.ParseInt(csvRowsStr[1], 10, 64)
                if err != nil {
                    return userBenefitList, errors.AddTrace(err)
                }
            }

            userBenefitTemp := UserBenefit{
                UserID:    userID,
                CatalogID: catalogID,
            }

            userBenefitList = append(userBenefitList, userBenefitTemp)
        }
    }

    return userBenefitList, nil
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

您可能感兴趣的文档:

--结束END--

本文标题: 读取位于密码保护 zip 文件中的 CSV 文件

本文链接: https://lsjlt.com/news/595741.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 读取位于密码保护 zip 文件中的 CSV 文件
    大家好,今天本人给大家带来文章《读取位于密码保护 zip 文件中的 CSV 文件》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!...
    99+
    2024-04-04
  • 读取golang中受密码保护的xls文件的方法
    本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《读取golang中受密码保护的xls文件的方法》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~问题内容我...
    99+
    2024-04-05
  • 在 Java 中读取 CSV 文件
    CSV 代表逗号分隔值,是一种非常流行的文件类型。CSV文件用于存储由逗号分隔的信息。文件的每一行都用于表示一个数据记录。在本教程中,我们将学习如何读取 CSV 文件并将其内容复制到数组或列表中。在本教程中,我们将使用仅包含三条记录的简单 ...
    99+
    2023-09-06
    java 前端 html
  • java读取zip/jar包中的文件
    1、jar vs zip: jar 文件和 zip 文件都是归档文件,并且都经过压缩。事实上,jar 文件使用与 zip 文件相同的存档和压缩技术,所以 jar 文件实际上是一种特定类型的 zip 文件。(JAR 文件本质上是一个包含可选 ...
    99+
    2023-09-03
    java jar jvm
  • C++中怎么读取CSV文件
    今天就跟大家聊聊有关C++中怎么读取CSV文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。***个函数:计算一个字符串中的某个子串的个数int strstr_cnt(co...
    99+
    2023-06-17
  • Python 文本文件与csv文件的读取与写入
    目录一、文本文件读取与写入1 读取文件的 read() 方法2 读取文件的 readline() 方法3 读取文件的 readlines() 方法4 写入文件的 write() 方法...
    99+
    2024-04-02
  • PHP读取和写入CSV文件的代码写
    这篇文章主要介绍“PHP读取和写入CSV文件的代码写”,在日常操作中,相信很多人在PHP读取和写入CSV文件的代码写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP读取和写入CSV文件的代码写”的疑惑有所...
    99+
    2023-07-06
  • java读取csv文件乱码怎么解决
    csv文件默认编码为ANSI,java读取CSV出现乱码主要是编码不一致问题。(推荐:java视频教程)DataInputStream in = new DataInputStream(new FileInputStream(new Fil...
    99+
    2020-07-07
    java 乱码
  • Python——csv文件的写入与读取
    1.csv文件介绍 CSV文件是一种常见的数据格式,它以逗号分隔不同的字段,每行表示一个数据记录。在Python中,我们可以使用csv模块来读取和写入CSV文件。 2.写入CSV文件 在Python中,我们可以使用csv模块的writer对...
    99+
    2023-09-04
    python 开发语言
  • win7文件夹如何加密码保护
    这篇“win7文件夹如何加密码保护”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7文件夹如何加密码保护”文章吧。win...
    99+
    2023-07-01
  • perl如何读取csv文件中的一行
    在Perl中,可以使用Text::CSV模块来读取CSV文件。下面是一个示例代码,演示了如何读取CSV文件中的一行:```perlu...
    99+
    2023-10-07
    perl
  • python怎么读取csv文件中的一列
    通过 python 的 csv 模块可以从 csv 文件中读取特定列,步骤如下:导入 csv 模块。打开 csv 文件。创建 csv 读者对象。可选:跳过标题行。循环遍历行,访问列。关闭...
    99+
    2024-04-02
  • linux如何在vim中用密码保护文件
    小编给大家分享一下linux如何在vim中用密码保护文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在vim中用密码保护文件害怕root用户或者其他人偷窥你的个...
    99+
    2023-06-27
  • R语言中如何读取CSV文件
    在R语言中,可以使用read.csv()函数来读取CSV文件。例如,假设我们有一个名为data.csv的CSV文件,可以使用以下代码...
    99+
    2024-04-08
    R语言
  • python 破解加密zip文件的密码
    目录今天的文章来自 盏茶作酒 同学。他在老电脑中发现了一个加密的 zip 文件,于是用 Python 破解了文件密码。在破解的过程中出现了内存爆炸的问题,通过阅读 Python 源代...
    99+
    2024-04-02
  • Python中Pandas怎么读取文件和读取CSV参数
    本篇内容主要讲解“Python中Pandas怎么读取文件和读取CSV参数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中Pandas怎么读取文件和读取CSV参数”吧!一、Pandas...
    99+
    2023-07-06
  • Python中,关于读取文件编码解码的问
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xb1 in position 94: illegal multibyte sequence 有时候用o...
    99+
    2023-01-31
    文件 Python
  • PHP读取和写入CSV文件的示例代码
    目录1. 什么是 CSV 文件2. 从 CSV 文件中读取数据3. 将数据写入 CSV 文件1. 什么是 CSV 文件 CSV(逗号分隔值)文件是使用逗号分隔信息的文本文件。该文件的...
    99+
    2023-05-15
    PHP读取CSV文件 PHP写入CSV文件 PHP CSV文件 PHP CSV
  • Python读取CSV文件的几种方法
    话不多说,开干!!! 目录 1. 使用 csv 模块 2.使用 numpy 库 3.使用pandas库 4.使用标准库中的 csv 模块 5.注意事项 1. 使用 csv 模块 (1)项目目录如下图所示: (2)代码如下: impor...
    99+
    2023-08-31
    python 开发语言 pandas numpy
  • python怎么读取csv文件的数据
    有两种方法可以使用 python 读取 csv 文件:使用 csv 模块: a. 导入 csv 模块 b. 打开 csv 文件 c. 创建 csv 阅读器 d. 遍历每一行使用 pand...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作