zlib.decompress(data,15 32)应该自动检测是否有gzip数据或zlib数据.

zlib.decompress(data,15 16)应该工作,如果gzip和barf如果zlib.

这里是Python 2.7.1,创建一个gz文件,读回来,并解压缩它:

>>> import gzip, zlib

>>> f = gzip.open('foo.gz', 'wb')

>>> f.write(b"hello world")

11

>>> f.close()

>>> c = open('foo.gz', 'rb').read()

>>> c

'\x1f\x8b\x08\x08\x14\xf4\xdcM\x02\xfffoo\x00\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x85\x11J\r\x0b\x00\x00\x00'

>>> ba = bytearray(c)

>>> ba

bytearray(b'\x1f\x8b\x08\x08\x14\xf4\xdcM\x02\xfffoo\x00\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x85\x11J\r\x0b\x00\x00\x00')

>>> zlib.decompress(ba, 15+32)

Traceback (most recent call last):

File "", line 1, in

TypeError: must be string or read-only buffer, not bytearray

>>> zlib.decompress(bytes(ba), 15+32)

'hello world'

>>>

Python 3.x的使用将非常相似.

基于您正在运行Python 2.2.1的注释更新.

叹.这甚至不是Python 2.2的最后一个版本.反正继续上面创建的foo.gz文件:

Python 2.2.3 (#42, May 30 2003, 18:12:08) [MSC 32 bit (Intel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> strobj = open('foo.gz', 'rb').read()

>>> strobj

'\x1f\x8b\x08\x08\x14\xf4\xdcM\x02\xfffoo\x00\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x85\x11J\r\x0b\x00\x00\x00'

>>> import zlib

>>> zlib.decompress(strobj, 15+32)

Traceback (most recent call last):

File "", line 1, in ?

zlib.error: Error -2 while preparing to decompress data

>>> zlib.decompress(strobj, 15+16)

Traceback (most recent call last):

File "", line 1, in ?

zlib.error: Error -2 while preparing to decompress data

# OK, we can't use the back door method. Plan B: use the

# documented approach i.e. gzip.GzipFile with a file-like object.

>>> import gzip, cStringIO

>>> fileobj = cStringIO.StringIO(strobj)

>>> gzf = gzip.GzipFile('dummy-name', 'rb', 9, fileobj)

>>> gzf.read()

'hello world'

# Success. Now let's assume you have an array.array object-- which requires

# premeditation; they aren't created accidentally!

# The following code assumes subtype 'B' but should work for any subtype.

>>> import array, sys

>>> aaB = array.array('B')

>>> aaB.fromfile(open('foo.gz', 'rb'), sys.maxint)

Traceback (most recent call last):

File "", line 1, in ?

EOFError: not enough items in file

#### Don't panic, just read the fine manual

>>> aaB

array('B', [31, 139, 8, 8, 20, 244, 220, 77, 2, 255, 102, 111, 111, 0, 203, 72, 205, 201, 201, 87, 40, 207, 47, 202, 73, 1, 0, 133, 17, 74, 13, 11, 0, 0, 0])

>>> strobj2 = aaB.tostring()

>>> strobj2 == strobj

1 #### means True

# You can make a str object and use that as above.

# ... or you can plug it directly into StringIO:

>>> gzip.GzipFile('dummy-name', 'rb', 9, cStringIO.StringIO(aaB)).read()

'hello world'

python压缩数据数组长度_python – 如何解压缩字节数组中的gzipped数据?相关推荐

  1. python 二维数组 长度_Python创建二维数组的正确姿势

    ↑↑↑点击上方"蓝字",关注"极客猴" 如果你喜欢极客猴,可以把我置顶或加为星标 题图:by watercolor.illustrations from Ins ...

  2. C#用Zlib压缩或解压缩字节数组

    /// <summary>/// 复制流/// </summary>/// <param name="input">原始流</param& ...

  3. 数组-接口2-参数为一个整型数组和数组长度的整数(该数组输入和运算结果),再加一个整数;预期结果是一个整型数组

    测试接口的代码说明 适用接口:参数为一个整型数组和数组长度的整数(该数组输入和运算结果),再加一个整数:预期结果是一个整型数组 测试接口的具体代码如下: 注意红色字体,用后续小节中的接口进行替换,进行 ...

  4. php读取数组长度,PHP count():获取数组长度

    PHP count() 函数用来获取数组长度,也即计算数组元素的个数.另外,count() 函数还可以统计对象中的属性个数. count() 语法如下: int count ( mixed $arr ...

  5. 提升: 建立一个如下的学生情况表,要求先依次输入学生数据元素,然后依次显示当前表中的学生数据元素。 学号 姓名 性别 年龄 2000001 张三 男 20 2000002

    提升: 建立一个如下的学生情况表,要求先依次输入学生数据元素,然后依次显示当前表中的学生数据元素. 学号 姓名 性别 年龄 2000001 张三 男 20 2000002 李四 男 21 200000 ...

  6. java 如何操作字节数组_实例解析Java字节数组操作模式代码

    字节数组的关键是它为存储在这部分内存中的每个8位值提供索引(快速)和精确的原始访问,并且您可以操纵这些字节来控制每个位.缺点是计算机只将每个条目视为一个独立的8位数字--这可能是您的程序正在处理的,或 ...

  7. python获取数组长度_Python返回数组(List)长度的方法

    原博文 2016-03-16 11:53 − 其实很简单,用len函数: >>> array = [0,1,2,3,4,5]>>> print len(array) ...

  8. python 查找二维数组长度_Python二维数组中的查找

    对于在一个每一行从左到右依次递增,每一列从上到下依次递增的二维数组查找一个元素,可以选择从数组左上角开始查找arrayi,如果目标元素大于arrayi,i+=1,如果元素小于arrayi,j-=1,依 ...

  9. python 随机获取数组元素_Python创建二维数组的正确姿势

    List (列表)是 Python 中最基本的数据结构.在用法上,它有点类似数组,因为每个列表都有一个下标,下标从 0 开始.因此,我们可以使用 list[1] 来获取下标对应的值.如果我们深入下列表 ...

最新文章

  1. 正则表达式语法规则收集
  2. ffmpeg m4a 转pcm_FFmpeg提取视频音频python将音频转文字
  3. Nature调查:读博难,在中国读博难上加难
  4. 为什么租号玩显示服务器忙,租号玩上号器怎么用,租号玩上号器使用教程
  5. [ Android 五种数据存储方式之二 ] —— 文件存储数据
  6. Springboot里输出的html里包含script标签页会怎样
  7. 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
  8. idea cloud bootstrap是啥_application.yml与bootstrap.yml的区别
  9. linux从别的主机下载,从局域网内的其他Linux主机下载文件
  10. Windows 下音频数据采集和播放
  11. UCSD COGS108 数据科学实战中文笔记·翻译完成
  12. python middleware模块_python之auth模块
  13. 现代的 “Hello, World”,可不仅仅是几行代码而已
  14. 漫画:分布式缓存服务器扛不住了怎么办?| 技术头条
  15. 阿里小姐姐工作7年,P6升P7无望,欲去当培训师
  16. 名师出高徒!请关注领英上这十位活跃的大神
  17. 想要走上巅峰?练好演讲也是必不可少的技能
  18. 量化金融入门笔记(一)
  19. C语言:变量存储类别
  20. CCF GAIR2018大会,100位全球人工智能大佬在深圳期待你的到来!

热门文章

  1. [转帖] bat方式遍历目录内的文件
  2. web api 安装包
  3. 读写生信流程必备的 Perl 语法
  4. CentOS 7 安装 配置 Nginx + PHP
  5. 【转载】C++ function、bind和lambda表达式
  6. .ashx接口单元测试
  7. How to adjust IFrame height on it's content (转载)
  8. 避免 rm -rf * 的悲剧,你值得拥有
  9. svn无法cleanup常见解决方案
  10. MySQL的安装和基本操作