我想从互联网下载一个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 }); }); [编辑]作为,build议,我尝试使用adm-zip库,我仍然无法完成这项工作: var ZipEntry = require('adm-zip/zipEntry'); request.get(url, function(err, res, zipFile) { if(err) throw err; var zip = new ZipEntry(); […]
首先,请忍受我。 我很难告诉别人我的问题,这是一个漫长的线程… 我正在使用pythonbrew在Ubuntu 10.10中运行多个版本的Python。 有关安装pythonbrew及其工作原理,请参阅下面的链接 http://www.howopensource.com/2011/05/how-to-install-and-manage-different-versions-of-python-in-linux/ 在阅读了几个stackoverflow线程之后,我终于在这个目录下find了一个名为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 我取消了最后一行的注释,然后再次运行python -v 。 但是,当我尝试导入zlib时,我收到了相同的错误,所以我想我必须做一些安装zlib到lib中。 但是我对我需要做的事情一无所知。 有人可以指导我在正确的方向? 非常感谢你! 我这样做是因为我想在我创build的不同版本的virtualenv中使用不同版本的python。 当我做了virtualenv […]
这与前面的问题类似,但是那里的答案不能满足我的需求,而我的问题稍有不同: 我目前使用gzip压缩包含sorting数据的一些非常大的文件。 当文件未被压缩时,二进制search是一种方便有效的方式来支持在sorting后的数据中寻找位置。 但是,当文件被压缩,事情变得棘手。 我最近发现了zlib的Z_FULL_FLUSH选项,可以在压缩过程中使用Z_FULL_FLUSH选项在压缩输出中插入“同步点” inflateSync()然后inflateSync()可以从文件中的各个点开始读取)。 这是好的,虽然我已经有文件将不得不重新join这个function(奇怪的是gzip没有这个选项,但我愿意编写自己的压缩程序,如果我必须)。 从一个来源看来,即使Z_FULL_FLUSH不是一个完美的解决scheme…不仅不是所有的gzip压缩文件都支持,而且在档案中检测同步点的想法可能会产生误报(或者与幻数同步点,或由于Z_SYNC_FLUSH也产生同步点,但它们不能用于随机访问)。 有更好的解决scheme吗? 如果可能的话,我想避免使用辅助文件进行索引,显式的,对准随机访问的默认支持将会有帮助(即使它是大粒度的,就像能够在每个10 MB间隔开始读取一样)。 有没有比gzip更好的支持随机读取的压缩格式? 编辑 :正如我所提到的,我希望在压缩数据中进行二分search。 我不需要寻找一个特定的(未压缩的)位置 – 只是在压缩文件中寻求一些粗略的粒度。 我只是想支持一些东西,如“解压缩大约50%(25%,12.5%等)的数据到这个压缩文件”。
Zlib :: GzipReader可以采用“一个IO或者IO类似的对象”。 因为它是input,如文档中所述。 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 我应该如何解压一个string?
如何在请求的模块响应中解压缩gzip体? 我已经在网上尝试了几个例子,但是没有一个能够工作。 request(url, function(err, response, body) { if(err) { handleError(err) } else { if(response.headers['content-encoding'] == 'gzip') { // How can I unzip the gzipped string body variable? // For instance, this url: // http://highsnobiety.com/2012/08/25/norse-projects-fall-2012-lookbook/ // Throws error: // { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' } // Yet, browser displays page fine and […]
如果我要AESencryption一个文件,然后ZLIB压缩它,那压缩的效率会比我先压缩然后encryption的效率低吗? 换句话说,我应该先压缩还是先encryption,还是重要?
尝试让Ruby 1.9.1在全新安装(Fedora)上运行并运行RVM。 在做rvm install 1.9.1 ,rubygems错误日志显示zlib不能被find 没有这样的文件加载 – zlib(LoadError) 但是,zlib运行时和开发库都已安装并且是最新的。 我现在有点不知所措。
在Python中使用SQLite3,我试图存储一个UTF-8 HTML代码片段的压缩版本。 代码如下所示: … c = connection.cursor() c.execute('create table blah (cid integer primary key,html blob)') … c.execute('insert or ignore into blah values (?, ?)',(cid, zlib.compress(html))) 在哪一点得到错误: sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just […]
更新2012年2月10日: zOompf在这里已经完成了一些非常深入的研究。 它胜过以下任何发现。 更新2010年9月11日: 这里为此创build了一个testing平台 一些背景信息的GZIP和DEFLATE(zlib)的HTTP 1.1定义: ''Gzip'是gzip格式, 'deflate'是zlib格式,为了避免与原始压缩数据格式混淆,可能应该调用第二个'zlib',而HTTP 1.1 RFC 2616正确指向在RFC 1950的zlib规范中,对于'deflate'传输编码, 已经有服务器和浏览器错误地产生或期望每个RFC 1951中的deflate规格的原始deflate数据, 特别是微软产品 ,所以即使'deflate'使用zlib格式传输编码将是更有效的方法( 实际上zlib格式的devise是什么 ),使用'gzip'传输编码可能是更可靠的,因为HTTP部分名称的不幸select1.1作者“。 (来源: http : //www.gzip.org/zlib/zlib_faq.html ) 所以,我的问题是:如果我用NO zlib wrapper(或者gzip)发送RAW deflate数据,是否有任何现代浏览器(例如IE6或更高版本,FF,Chrome,Safari等)无法理解原始缩减压缩数据(假设HTTP请求头“Accept-Encoding”包含“deflate”)? 放气数据总是比GZIP小几个字节。 如果所有这些浏览器都可以成功解码数据,那么发送RAW deflate而不是zlib有什么不利之处呢? 更新2010年9月11日: 这里为此创build了一个testing平台
我刚刚移动到Ubuntu 8.10作为我的开发盒; 这是我作为一个日常使用的操作系统的第一次严重的入侵Linux,我很难让Rails去。 我已经遵循了许多教程,似乎都工作正常,但是当我尝试使用任何gem install或gem更新时,我得到一个如下所示的错误: /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load — zlib (LoadError) from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:1 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/commands/update_command.rb:5 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:167:in `load_and_instantiate' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:88:in `[]' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:144:in `find_command' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:131:in `process_args' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in `run' from /usr/local/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run' from /usr/local/bin/gem:21 我有(如教程中推荐的)安装了zlib,zlib1g和zlib1g-dev。 […]