【问题标题】:Reading gz file in Ruby using Zlib. Zlib::GzipReader is reading only the first line of the file and not all lines使用 Zlib 在 Ruby 中读取 gz 文件。 Zlib::GzipReader 只读取文件的第一行而不是所有行
【发布时间】:2019-10-10 15:49:44
【问题描述】:

我有一个要解析的gz 文件。我正在使用Zlib::GzipReader 库来打开它。 在控制台中,我有这样的文件:

164] pry(main)> file
=> #<Zlib::GzipReader:0x00007fadbbfa5a08>
[166] pry(main)> Zlib::GzipReader.open(file.path){|gz| print gz.read }
"Date","Connection type code","Connection id","Currency","Impressions","Campaign","Traffic source","Clicks","Cost (EUR)","Country"
=> nil

请注意,在读取文件并打印后。我刚得到第一行,但实际上,该文件包含很多行,我想全部拥有它们

【问题讨论】:

  • 无法使用 Ruby 2.6.3 进行复制。包括重现的确切步骤,包括:生成文本文件、转换为 gzip 文件、设置 file 变量。
  • 你在 Linux 上运行吗?尝试运行gzip -tv &lt;filename&gt; 以确保压缩文件通过一致性检查
  • 我刚刚遇到了来自同一来源的文件的相同问题,从这些标题来看。 ???如果我通过gunzip 运行它,我会得到所有行,并且只有第一行使用与上述相同的方法...... ????我目前使用的是 Ruby 版本 2.5.3p105。

标签: ruby file ruby-on-rails-3 gzip zlib


【解决方案1】:

您的问题与this bug有关:

Zlib::GzipReader 只解压第一个连接文件。

由于还没有解决,可以使用multiple_files_gzip_readergem绕过Zlib的限制。

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 2010-12-02
    • 2010-12-26
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2011-10-25
    相关资源
    最近更新 更多