Javatpoint标志
Javatpoint标志

Python zlib库|在Python中zlib是什么?

zlib是一个Python库,它支持zlib C库,这是压缩无损压缩算法的高级泛化。zlib库用于无损压缩,这意味着压缩和解压之间没有数据丢失)。

它还提供了跨不同平台的可移植性优势,并且不需要扩展数据。

这个库在安全性方面起着非常重要的作用。许多应用程序需要对任意数据(如字符串、文件或结构化内存内容)进行压缩和解压缩。

这个图书馆很适合用Gzip文件格式/工具,UNIX系统上最流行和最有用的压缩应用程序。

compression()方法

zlib库帮助我们压缩()方法,该方法用于压缩数据字符串。下面是函数的语法。

参数- - - - - -

  • data参数指定要压缩的字节数,level表示-1 ~ 9之间的整数值。level参数用于定义压缩的级别。9级表示最慢;但是,它带来了最高的压缩级别。-1为缺省值,即6级。级别0不产生压缩。

让我们来理解下面的例子。

的例子,

输出:

原始数据:欢迎使用JavaTpoint压缩数据:785ef348cdc9c95728cf2fca49010018ab043d

如果我们将值2更改为0,那么结果将如下所示。

压缩大数据流

zlib库提供了comressobj ()管理大型数据流。该方法返回压缩对象。语法如下所示。

语法- - - - - -

参数- - - - - -

  • 上述方法接受wbits作为处理窗口大小的参数,输出中包含头和尾。下面是的可能值
价值 窗口大小对数 输出
+9到+15 以2为底 它包括zlib头文件和尾文件。
+9到-15 表示wbit的绝对值 排除头片和尾片。
+25到+31 值的低4位。 它包括一个头部和尾随校验和。
  • 方法参数定义压缩中使用的算法。的放气是默认的,也可以说是当前可能的算法。
  • 策略参数定义压缩调优。目前建议只使用默认值。

让我们来理解下面的例子

的例子,

输出:

压缩数据:f348cdc9c95728cf2fca490100

解释,

我们取了一个简单的字符串值,它不是一个大的数据流,它的目的是显示的工作compressobj ()函数。字符串“Welcome to JavaTpoint”已被压缩。通常,当数据流过大或无法装入内存时使用此方法。这种方法在更大的应用程序中扮演着重要的角色,在这种应用程序中,我们可以配置压缩,并可用于连续压缩数据的各个部分。

它在需要压缩的地方起着重要的作用。在…的帮助下compress.compress(数据)方法,则可以压缩和刷新数据块,而不必在内存中累积全部数据。

压缩文件

我们将使用压缩()方法压缩文件。语法与前面的示例类似。

在下面的例子中,我们将压缩PNG图像“mountain.png”。

让我们来理解下面的例子。

的例子,

输出:

压缩:10%

在上面的例子中,我们使用了Z_BEST_COMPRESSION,这是该算法所能提供的最佳压缩级别。在下一行中,我们根据压缩数据长度与原始数据的比值计算压缩级别。文件压缩13%,这是如何压缩ASCII字符串或二进制图像数据。

保存压缩数据到文件

我们还可以将压缩后的数据保存在文件中,以备将来使用。在下面的示例中,我们将一些压缩文本显示到一个文件中。

的例子,

当我们运行上面的程序时,它会压缩给定的字符串,并将压缩后的数据保存到名为“output.txt”的文件中。

减压

解压也是应用程序的一个重要方面。zlib库提供了减压()方法。下面是它的语法。

语法:

参数- - - - - -

  • 数据参数是一个字节格式的值。
  • wbits参数用于管理历史缓冲区的大小。可能的缓冲值如下所示。
价值 窗口大小对数 输入
+8到+15 以2为底 它包括zlib头文件和尾文件
-8到-15 它表示wbits的绝对值 它包括没有标题和预告片的原始流
+24到+31 = 16 +(8到15) 它表示值的低4位 它包括gzip头文件和拖车
+40到+47 = 32 +(8到15) 它表示值的低4位 Zlib或gzip格式
  • bufsize参数表示缓冲区大小。这个论证最好的地方在于它不需要精确;当需要额外的缓冲区大小时,它的值会自动增加。

让我们来理解下面的例子。

的例子,

输出:

欢迎来到JavaTpoint

解压缩大数据流

在解压大数据流时,由于数据的大小或来源,我们可能会面临内存管理问题。对于特定的任务,我们可能无法利用所有可用内存。所以,decompressobj ()允许我们将一个大的流划分为多个块,这些块可以分别解压。

语法如下所示。

语法- - - - - -

上述方法返回解压对象,该对象用于解压缩特定的数据。

让我们来理解下面的例子。

的例子,

输出:

Data Before Decompress: Welcome to JavaTpoint Data After Decompress - #@$%%#@@#s Decompressed Data: Welcome to JavaTpoint

解压文件中的数据

正如我们在前面的示例中所讨论的,我们可以轻松地解压文件中包含的数据。这个例子类似于前面的例子;从文件中获取数据,但在本例中,我们将使用减压()方法。当数据足够小,可以轻松放入内存时,这种方法非常有用。

让我们来理解下面的例子。

的例子,

解释,

我们已经阅读了包含“欢迎来到JavaTpoint”的hello.dat。但是,该文件包含一个小字符串,因此我们使用了decompress()而不是decompressobj ()函数。

结论

当应用程序需要在安全级别上进行压缩时,Python zlib库非常有用。它有一堆出色的功能。我们已经讨论了zlib库的一些重要概念,尽管还有许多函数可用。compress()和decompress()方法用于小数据,而compressobj()和decompressobj()方法通过支持数据流的压缩/解压缩提供了更大的灵活性。


下一个话题 Python队列模块





Youtube 观看视频请加入我们的Youtube频道:现在加入

反馈


帮助他人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


B.Tech / MCA






Baidu
map