Tag: gz

Ruby流tar / gz

基本上我想将数据从内存流式传输到tar / gz格式(可能是多个文件到tar中,但它永远不应该触及HARDDRIVE,只能流式传输!),然后将它们传输到其他地方(在我的情况下是一个HTTP请求体)。 有人知道现有的库可以做到这一点吗? Rails中有什么东西吗? libarchive-ruby只是一个C包装器,看起来它非常依赖于平台(文档希望你编译为安装步骤?!)。 解: require ‘zlib’ require ‘rubygems/package’ tar = StringIO.new Gem::Package::TarWriter.new(tar) { |writer| writer.add_file(“a_file.txt”, 0644) { |f| (1..1000).each { |i| f.write(“some text\n”) } } writer.add_file(“another_file.txt”, 0644) { |f| f.write(“some more text\n”) } } tar.seek(0) gz = Zlib::GzipWriter.new(File.new(‘this_is_a_tar_gz.tar.gz’, ‘wb’)) # Make sure you use ‘wb’ for binary write! gz.write(tar.read) tar.close gz.close 而已! […]

如何逐行读取gzip文件?

我有一个gzip文件,目前我这样读了: infile = open(“file.log.gz”) gz = Zlib::GzipReader.new(infile) output = gz.read puts result 我认为这会将文件转换为字符串,但我想逐行阅读。 我想要完成的是该文件有一些垃圾的警告消息,我想grep这些警告消息,然后将它们写入另一个文件。 但是,一些警告信息会被重复,所以我必须确保我只对它们进行一次grep。 因此逐行阅读会对我有所帮助。