标签: zlib

压缩格式对档案内的随机访问有很好的支持?

这与之前的问题类似,但那里的答案不能满足我的需求,我的问题略有不同:

我目前对一些包含排序数据的非常大的文件使用gzip压缩.当文件未被压缩时,二进制搜索是支持在排序数据中寻找位置的便捷有效方式.

但是当文件被压缩时,事情变得棘手.我最近发现了zlibZ_FULL_FLUSH选项,可以在压缩过程中使用它在压缩输出中插入"同步点"(inflateSync()然后可以从文件中的各个点开始读取).这是可以的,虽然我已经拥有的文件必须重新压缩才能添加此功能(奇怪的gzip是没有这个选项,但如果必须,我愿意编写自己的压缩程序).

一个来源看来,即使Z_FULL_FLUSH不是一个完美的解决方案......不仅所有gzip档案都不支持它,而且在档案中检测同步点的想法可能会产生误报(或者与同步的幻数重合)点,或由于Z_SYNC_FLUSH也产生同步点但它们不能用于随机访问的事实.

有更好的解决方案吗?如果可能的话,我想避免使用辅助文件进行索引,并且对准随机访问的显式默认支持将是有帮助的(即使它是大粒度的 - 就像能够以每10 MB的间隔开始读取一样).是否有另一种压缩格式比gzip更好地支持随机读取?

编辑:正如我所提到的,我希望在压缩数据中进行二进制搜索.我不需要寻找特定的(未压缩的)位置 - 只是在压缩文件中寻找一些粗粒度.我只是希望能够支持诸如"将数据从大约50%(25%,12.5%等)开始压缩到此压缩文件中".

compression gzip zlib archive random-access

54
推荐指数
6
解决办法
2万
查看次数

Python:Inflate和Deflate实现

我正在与服务器连接,该服务器要求发送给它的数据使用Deflate算法(Huffman编码+ LZ77)进行压缩,并且还发送我需要的数据以进行Inflate.

我知道Python包含Zlib,并且Zlib中的C库支持对InflateDeflate的调用,但这些显然不是由Python Zlib模块提供的.它提供压缩解压,但是当我拨打电话,如下列:

result_data = zlib.decompress( base64_decoded_compressed_string )
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error -3 while decompressing data: incorrect header check
Run Code Online (Sandbox Code Playgroud)

Gzip并没有更好; 在打电话时如:

result_data = gzip.GzipFile( fileobj = StringIO.StringIO( base64_decoded_compressed_string ) ).read()
Run Code Online (Sandbox Code Playgroud)

我收到错误:

IOError: Not a gzipped file
Run Code Online (Sandbox Code Playgroud)

这是有道理的数据是平减文件不是真正的Gzip压缩文件.

现在我知道有一个Deflate实现可用(Pyflate),但我不知道Inflate的实现.

似乎有几个选择:

  1. 在Python中查找InflateDeflate的现有实现(理想)
  2. 将我自己的Python扩展编写到包含InflateDeflate的zlib c库中
  3. 调用可以从命令行执行的其他内容(例如Ruby脚本,因为zlib中的Inflate/Deflate调用完全包含在Ruby中)

我正在寻求解决方案,但缺乏解决方案,我将感谢见解,建设性意见和想法.

附加信息:为了我需要的目的,放松(和编码)字符串的结果应该与下面的C#代码片段给出相同的结果,其中输入参数是与要压缩的数据相对应的UTF字节数组:

public static …
Run Code Online (Sandbox Code Playgroud)

c# python compression zlib

52
推荐指数
2
解决办法
4万
查看次数

zlib.error:解压缩时出错-3:不正确的标头检查

我有一个gzip文件,我试图通过Python读取它,如下所示:

import zlib

do = zlib.decompressobj(16+zlib.MAX_WBITS)
fh = open('abc.gz', 'rb')
cdata = fh.read()
fh.close()
data = do.decompress(cdata)
Run Code Online (Sandbox Code Playgroud)

它会抛出此错误:

zlib.error: Error -3 while decompressing: incorrect header check
Run Code Online (Sandbox Code Playgroud)

我怎么能克服它?

python gzip zlib

50
推荐指数
2
解决办法
6万
查看次数

如何在ruby中解压缩Gzip字符串?

Zlib :: GzipReader可以采用"IO或IO类对象".正如它的输入,如文档中所述.

Zlib::GzipReader.open('hoge.gz') {|gz|
  print gz.read
}

File.open('hoge.gz') do |f|
  gz = Zlib::GzipReader.new(f)
  print gz.read
  gz.close
end
Run Code Online (Sandbox Code Playgroud)

我应该如何解开字符串?

ruby gzip zlib

47
推荐指数
6
解决办法
4万
查看次数

没有名为zlib的模块

首先,请耐心等待.我很难告诉别人我的问题,这是一个很长的线索......

我正在使用pythonbrew在Ubuntu 10.10中运行多个版本的python.有关安装pythonbrew及其工作原理,请参阅下面的链接

http://www.howopensource.com/2011/05/how-to-install-and-manage-different-versions-of-python-in-linux/

在阅读了几个stackoverflow线程后,我终于在这个目录下找到了名为Setup的文件: 〜/ .pythonbrew/pythons/Python-2.7.1/lib/python2.7/config

In this Setup file I see 
# Andrew Kuchling's zlib module.
# This require zlib 1.1.3 (or later).
# See http://www.gzip.org/zlib/
# zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
Run Code Online (Sandbox Code Playgroud)

我取消注释最后一行,然后我再次运行python -v.但是,当我尝试导入zlib时,我收到了同样的错误,所以我想我必须做一些事情来将zlib安装到lib中.

但我对自己需要做的事情一无所知.有人可以指导我朝正确的方向??? 非常感谢你!

我这样做是因为我想在我创建的不同virtualenv中使用不同版本的python.当我做virtualenv -p python2.7时,我没有 收到名为zlib的模块.

jwxie518@jwxie518-P5E-VM-DO:~$ virtualenv -p python2.7 --no-site-packages testenv

Running virtualenv with interpreter /home/jwxie518/.pythonbrew/pythons/Python-2.7.1/bin/python2.7

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 17, in <module>
    import zlib

ImportError: No module named zlib
Run Code Online (Sandbox Code Playgroud)

编辑

我必须通过附加--force来安装2.7.1.

我正在开发Django,我需要一些这些缺少的模块,例如sqlite3,并创建我的virtualenv我绝对需要zlib.如果我只使用系统默认值(2.6.6),我没有问题. …

python zlib virtualenv ubuntu-10.10

45
推荐指数
4
解决办法
12万
查看次数

如何在NodeJs中下载和解压缩内存中的zip文件?

我想从互联网上下载一个zip文件并将其解压缩到内存而不保存到临时文件.我怎样才能做到这一点?

这是我尝试过的:

var url = 'http://bdn-ak.bloomberg.com/precanned/Comdty_Calendar_Spread_Option_20120428.txt.zip';

var request = require('request'), fs = require('fs'), zlib = require('zlib');

  request.get(url, function(err, res, file) {
     if(err) throw err;
     zlib.unzip(file, function(err, txt) {
        if(err) throw err;
        console.log(txt.toString()); //outputs nothing
     });
  });
Run Code Online (Sandbox Code Playgroud)

[编辑]正如,建议,我尝试使用adm-zip库,我仍然无法使这项工作:

var ZipEntry = require('adm-zip/zipEntry');
request.get(url, function(err, res, zipFile) {
        if(err) throw err;
        var zip = new ZipEntry();
        zip.setCompressedData(new Buffer(zipFile.toString('utf-8')));
        var text = zip.getData();
        console.log(text.toString()); // fails
    });
Run Code Online (Sandbox Code Playgroud)

javascript zip zlib unzip node.js

42
推荐指数
2
解决办法
4万
查看次数

使用zlib解压缩.zip文件的简单方法

是否有一个简单的示例,说明如何解压缩.zip文件并将文件解压缩到目录?我目前正在使用zlib,虽然我知道zlib没有直接处理zip文件,但在zlibs的"contrib"库中似乎还有其他一些东西.我注意到并阅读了"minizip",在阅读了一些文档并查看了一些代码之后,我没有看到如何解压缩.zip文件并将文件解压缩到目录的简单示例.

我想找到一种独立于平台的方式,但如果不可能,那么我需要为windows和mac找到一种方法.

c++ zip zlib unzip

38
推荐指数
2
解决办法
10万
查看次数

brew安装zlib-devel在Mac OS X Mavericks上

尝试使用自制软件在mac os x mavericks上安装zlib-devel不起作用:

brew install zlib-devel
Error: No available formula for zlib-devel 
Searching taps...
Run Code Online (Sandbox Code Playgroud)

这个安装

brew install zlib
Run Code Online (Sandbox Code Playgroud)

虽然工作得很好.

homebrew zlib osx-mavericks

38
推荐指数
5
解决办法
5万
查看次数

错误:'zlib'是无效命令

如何在OSX中运行此命令?

dd if=mybackup.ab bs=24 skip=1|openssl zlib -d > mybackup.tar

当我运行这个时,我得到以下错误

$ dd if=mybackup.ab bs=24 skip=1|openssl zlib -d > mybackup.tar
dd: mybackup.ab: No such file or directory
openssl:Error: 'zlib' is an invalid command.

Standard commands
asn1parse      ca             ciphers        crl            crl2pkcs7      
dgst           dh             dhparam        dsa            dsaparam       
ec             ecparam        enc            engine         errstr         
gendh          gendsa         genrsa         nseq           ocsp           
passwd         pkcs12         pkcs7          pkcs8          prime          
rand           req            rsa            rsautl         s_client       
s_server       s_time         sess_id        smime          speed          
spkac          verify         version        x509           

Message Digest commands (see the `dgst' command …
Run Code Online (Sandbox Code Playgroud)

macos openssl zlib

38
推荐指数
2
解决办法
1万
查看次数

MacOS上的pyenv zlib错误:

我的目标

我正在尝试使用pyenv在我的MBP上并行安装Python 2.7.5和3.6.5.

pyenv 安装

以下如何使用Homebrew在Mac上安装Python 2和3?, 我试过了:

$ pyenv install 3.6.5
Run Code Online (Sandbox Code Playgroud)

哪个错误:

python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.5.tar.xz...
-> https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
Installing Python-3.6.5...
python-build: use readline from homebrew

BUILD FAILED (OS X 10.13.4 using python-build 20160602)

Inspect or clean up the working tree at /var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709
Results logged to /var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709.log

Last 10 log lines:
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/d0/t8d3jjp161g2dyrd4k67ypc80000gn/T/python-build.20180426091253.34709/Python-3.6.5/Lib/ensurepip/__init__.py", line 117, in …
Run Code Online (Sandbox Code Playgroud)

macos xcode zlib pyenv

34
推荐指数
4
解决办法
6225
查看次数