Python zlib 库的理解3 Dec 2024 | 6 分钟阅读 zlib 是一个 Python 库,它支持 zlib C 库,zlib C 库是用于无损压缩算法(deflate)的高层泛化。zlib 库用于无损压缩,这意味着在压缩和解压缩之间没有数据丢失。 它还提供了跨不同平台的兼容性优势,并且不会扩展数据。 在安全性方面,此库发挥着非常重要的作用。许多应用程序需要压缩和解压缩任意数据,例如字符串、文件或内存中的结构化内容。 此库与 **gzip 文件格式/工具** 非常匹配,gzip 是类 UNIX 系统上流行且有用的压缩应用程序。 compress() 方法zlib 库提供了 **compress()** 方法,用于压缩数据字符串。下面是该函数的语法。 参数 -
让我们了解下面的示例。 示例 - 输出 Original data: Welcome to JavaTpoint Compressed data: 785ef348cdc9c95728cf2fca49010018ab043d 如果我们把值 2 改为 0,结果将如下所示。 压缩大型数据流zlib 库提供了 **comressobj()** 函数来管理大型数据流。此方法返回一个压缩对象。语法如下。 语法 - 参数 -
让我们理解以下示例 示例 - 输出 Original: Hello world Compressed data: f348cdc9c95728cf2fca490100 解释 - 我们采用了一个简单的字符串值,它不是一个大的数据流,但足以说明 **compressobj()** 函数的工作原理。字符串“Welcome to JavaTpoint”已被压缩。通常,当数据流太大或无法放入内存时,会使用此方法。此方法在较大的应用程序中扮演着重要的角色,在这些应用程序中,我们可以配置压缩,并可以用于按顺序压缩数据的一部分。 它在需要压缩的地方发挥着重要作用。借助 **compress.compress(data)** 方法,我们可以在不将全部数据累积在内存中的情况下,压缩和刷新数据块。 压缩文件我们将使用 **compression()** 方法来压缩文件。语法与上一个示例类似。 在下面的示例中,我们将压缩 PNG 图像“mountain.png”。 让我们理解下面的例子。 示例 - 输出 Compressed: 10% 在上面的示例中,我们使用了 **Z_BEST_COMPRESSION**,这是该算法能提供的最佳压缩级别。在下一行,我们根据压缩数据长度与原始数据长度的比率计算压缩级别。文件压缩了 13%,这就是压缩 ASCII 字符串或二进制图像数据的方法。 将压缩数据保存到文件我们还可以将压缩后的数据保存到文件中以供将来使用。在下面的示例中,我们将一些压缩后的文本显示到文件中。 示例 - 作为上述代码片段的结果,给定的字符串被压缩并保存在一个名为“outfile.txt”的文件中。 解压缩解压缩也是应用程序的一个重要方面。zlib 库提供了 **decompress()** 方法。下面是它的语法。 语法 参数 -
让我们理解下面的例子。 示例 - 输出 Welcome to JavaTpoint 解压缩大型数据流在解压缩大型数据流时,我们可能会遇到内存管理问题,这取决于数据的大小或来源。我们可能无法为该特定任务利用所有可用内存。因此,**decompressobj()** 允许我们将大型流分成多个块,可以单独解压缩。 语法如下。 语法 - 上述方法返回一个解压缩对象,用于解压缩特定数据。 让我们理解下面的例子。 示例 - 输出 Data before Decompress: Welcome to JavaTpoint Compressed Data: b'x\x9c\x0bO\xcdI\xce\xcfMU(\xc9W\xf0J,K\x0c)\xc8\xcf\xcc+\x01\x00U{\x07\xf0' Decompressed data: Welcome to JavaTpoint 从文件中解压缩数据正如我们在前面的示例中讨论过的,我们可以轻松地解压缩文件中包含的数据。此示例与前面的示例类似;我们从文件中获取数据,不同之处在于,在本例中,我们将使用 **decompress()** 方法。当数据足够小,可以轻松放入内存时,此方法非常有用。 让我们理解下面的例子。 示例 - 解释 - 我们读取了包含“Welcome to JavaTpoint”的 hello.dat。但是,该文件包含一个小的字符串,因此我们使用了 decompress() 而不是 **decompressobj()** 函数。 结论当应用程序需要一定安全级别的压缩时,Python zlib 库非常有用。它提供了一系列出色的函数。我们已经讨论了 zlib 库的一些重要概念,尽管还有许多其他函数可用。compress() 和 decompress() 方法用于小数据,而 compressobj() 和 decompressobj() 方法通过支持数据流的压缩/解压缩来提供更大的灵活性。 下一主题Python Queue 模块 |
在本教程中,我们将学习并发以及如何使用并发加速 Python 程序。我们将了解并发方法与 asyncio 模块的比较。我们还将讨论什么是并行性以及一些并发方法。什么是并发?并发是...
阅读 12 分钟
在过去的几年里,我们看到几乎每个领域和我们生活的方方面面都发生了巨大的数字化转型。我们可以很容易地观察到,我们现在对技术的依赖程度比以往任何时候都高。我们可以在每个部分都看到这一点……
阅读 6 分钟
任意轴上两点之间的欧几里得距离是它们之间的最短距离。换句话说,它是两点之间的位移长度。给定 2 维平面上的两点 A (a, b) 和 B (c, d),A 和 B 之间的欧几里得距离是...
阅读 3 分钟
在 Python 中理解朴素贝叶斯算法 朴素贝叶斯是一种广泛使用的机器学习规则集。它在文本分类、垃圾邮件检测、情感分析等方面尤其受欢迎。在本文章中,我们将...
7 分钟阅读
简介:本教程讨论了如何使用 Python 将 MultiDict 转换为嵌套字典。MultiDict 是一个类似字典的对象,它包含相同键的多个值,使其成为处理表单和查询字符串的合适数据结构。它是 Python 的子类...
阅读 4 分钟
Python 的 Matplotlib 模块用于数据可视化。一组称为 pyplot 的方法,它是 matplotlib 的一个子模块,有助于创建各种图表。使用折线图在不同的轴上显示两组数据 X 和 Y 之间的关系。在这里,我们将研究...
阅读 6 分钟
西尔维斯特序列以著名数学家詹姆斯·约瑟夫·西尔维斯特的名字命名,是一个迷人的数学序列,它遵循一个另类简单但有趣的规则。这个序列来源于一个特殊的递归关系,在数学和计算机技术科学中有各种应用。在本文中,...
阅读 4 分钟
sqrt() 函数是 Python 中用于执行与数学相关的操作的内置函数。sqrt() 函数用于返回任何导入数字的平方根。在本教程中,我们将讨论如何在 Python 中使用 sqrt() 函数。语法:math.sqrt(N) 参数:“N”可以是任何...
阅读 3 分钟
os.path.basename() 是 Python os.path 模块中的一个方法,它返回文件路径的基本名称。基本名称是路径的最后一个组件,在剥离所有父目录和扩展信息之后。例如,如果路径是 /home/user/Documents/myfile.txt,则基本名称是...
阅读 3 分钟
在 Python 中,我们知道算术运算符如何用于加、减、除和乘两个变量。在本文中,我们将学习如何在评估表达式时以精确的形式扩展运算符的功能。让我们来看看...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India