提取 XAR 文件

无限制 作业。文件大小达到 2.5GB。永久免费。

私密和安全

一切都在您的浏览器中进行。您的文件绝不接触我们的服务器。

极速

无需上传,无需等待。在您拖放文件的瞬间即可转换。

完全免费

无需帐户。无隐藏费用。无文件大小限制花招。

什么是XAR格式?

可扩展归档

.whl 文件格式,代表“Wheel”,是一种基于 ZIP 的存档格式,专为分发和安装 Python 包而设计。它在 PEP 427 中作为旧 .egg 格式的替代品引入。与源代码分发相比,.whl 格式提供了一种更有效、更快速且与平台无关的方式来分发 Python 包。

.whl 文件本质上是一个 ZIP 存档,遵循特定的目录结构和命名约定。该存档包含 Python 包的源代码、已编译的字节码以及安装所需元数据文件。.whl 格式允许更快的安装,因为它消除了在安装期间执行 setup.py 和编译包的需要。

.whl 文件的命名约定遵循特定模式:{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl。我们来分解每个组件: - {distribution}:Python 包的名称。 - {version}:包的版本号。 - {build tag}(可选):指示包的特定版本。 - {python tag}:指示 Python 实现和版本,例如 CPython 3.8 的 cp38。 - {abi tag}:指定应用程序二进制接口 (ABI),例如具有 Unicode UCS-4 的 CPython 3.8 的 cp38m。 - {platform tag}:指定目标平台,例如 64 位 Windows 的 win_amd64。 例如,名为 mypackage-1.0.0-cp38-cp38-win_amd64.whl 的 .whl 文件表示为 64 位 Windows 上的 CPython 3.8 构建的“mypackage”的 1.0.0 版本。

.whl 存档中的目录结构遵循特定的布局。在顶层,有一个“{distribution}-{version}.dist-info”目录,其中包含元数据文件。实际的包代码和资源存储在一个名为“{distribution}-{version}.data”的单独目录中。

在“.dist-info”目录中,您通常会找到以下文件: - METADATA:包含包元数据,例如名称、版本、作者和依赖项。 - WHEEL:指定 Wheel 规范的版本和包的兼容性标记。 - RECORD:.whl 存档中包含的所有文件的列表以及用于完整性验证的哈希值。 - entry_points.txt(可选):定义包的入口点,例如控制台脚本或插件。 - LICENSE.txt(可选):包含包的许可信息。 “.data”目录保存实际的包代码和资源,根据包的内部结构进行组织。

要创建 .whl 文件,您通常使用 setuptools 或 pip 等工具。这些工具根据包的 setup.py 文件或 pyproject.toml 配置自动生成必要的元数据文件并将代码打包到 .whl 格式中。例如,在包的目录中运行 `python setup.py bdist_wheel` 或 `pip wheel .` 将在“dist”目录中生成一个 .whl 文件。

从 .whl 文件安装包时,pip 等工具会处理安装过程。它们提取 .whl 存档的内容,使用 RECORD 文件中的信息验证文件的完整性,并将包安装到 Python 环境中的适当位置。“.dist-info”目录中的元数据文件用于跟踪已安装的包及其依赖项。

.whl 格式的主要优点之一是它能够提供预构建的、特定于平台的包。这意味着用户可以安装包,而无需具有兼容的构建环境或从源代码编译包。.whl 文件可以针对不同的平台和 Python 版本进行构建和分发,从而更容易将包分发给广泛的用户。

与源代码分发相比,.whl 格式的另一个好处是其更快的安装速度。由于 .whl 文件包含预构建的字节码并且在安装期间不需要执行 setup.py,因此安装过程明显更快。对于具有复杂构建过程或依赖项的包,这一点尤其明显。

.whl 格式还支持各种功能和扩展。例如,它允许在存档中包含已编译的扩展(例如 C 扩展),从而方便分发带有本机代码的包。它还支持“直接 URL 引用”(PEP 610)的概念,该概念允许为包依赖项指定 URL,从而实现更灵活的分发机制。

总之,.whl 存档格式是一种标准化且高效的分发 Python 包的方式。与源代码分发相比,它提供了一个与平台无关且更快的安装过程。通过遵循特定的目录结构和命名约定,.whl 文件将包代码、元数据和依赖项封装在一个存档中。.whl 格式的广泛采用极大地简化了 Python 包的分发和安装,使开发人员更容易共享他们的库,也使用户能够无缝地安装它们。

文件压缩通过减少冗余,让相同的信息占用更少的比特。可压缩的上限受信息论约束:对于无损压缩,上界是信源熵(参见香农的信源编码定理及其 1948 年的原始论文《通信的数学理论》)。对于有损压缩,码率与感知质量之间的权衡由率失真理论描述。

两大支柱:建模与编码

大多数压缩器分两步。首先,模型预测或揭示数据中的结构。然后,编码器把这些预测变成近乎最优的比特模式。一个经典的建模家族是 Lempel–Ziv:LZ77 (1977)和 LZ78 (1978) 会检测重复子串并输出引用而不是原始字节。在编码端,霍夫曼编码(见原始论文1952)会为更常见的符号分配更短的代码。算术编码范围编码能更贴近熵极限,而现代的非对称数值系统(ANS)用查表实现获得相似的压缩率。

常见格式的实际做法

DEFLATE(被 gzipzlibZIP 采用)结合了 LZ77 和霍夫曼编码。其规范完全公开:DEFLATERFC 1951、zlib 封装RFC 1950以及 gzip 文件格式RFC 1952。Gzip 面向流式传输并明确不提供随机访问。PNG 图像标准化将 DEFLATE 作为唯一的压缩方法(窗口最多 32 KiB),可见 PNG 规范“Compression method 0… deflate/inflate… at most 32768 bytes”W3C/ISO PNG 第二版

Zstandard (zstd): 面向高压缩率与快速解压的通用压缩器。格式记录在RFC 8878(还有HTML 镜像)以及 GitHub 上的参考规范文档。与 gzip 类似,基本帧不追求随机访问。zstd 的拿手好戏是字典:从语料中抽取的小样本能显著改善大量小文件或相似文件的压缩(参见python-zstandard 字典文档Nigel Tao 的示例)。各实现同时支持“无结构”和“有结构”字典(讨论)

Brotli: 为网页内容(例如 WOFF2 字体、HTTP)优化,混合静态字典与类似 DEFLATE 的 LZ+熵编码核心。规范见RFC 7932,其中也指出滑动窗口大小为 2WBITS-16,WBITS 取值 [10, 24](1 KiB-16 B 到 16 MiB-16 B),并且不尝试随机访问。Brotli 常在网页文本上优于 gzip,同时保持快速解码。

ZIP 容器: ZIP 是一种文件归档格式,可存储使用多种压缩算法(deflate、store、zstd 等)的条目。事实标准是 PKWARE 的 APPNOTE(参见APPNOTE 门户托管副本以及美国国会图书馆的概览ZIP File Format (PKWARE)/ZIP 6.3.3)。

常见问题解答

什么是文件压缩?

文件压缩是一种减小文件或文件集大小的过程,通常用于节省存储空间或加速网络传输。

文件压缩是如何工作的?

文件压缩通过识别和删除数据中的冗余来工作。它使用算法在更小的空间中编码原始数据。

文件压缩有哪些类型?

文件压缩的两种主要类型是无损压缩和有损压缩。无损压缩允许完美恢复原始文件,而有损压缩则以损失部分数据质量为代价,实现更大的大小减小。

文件压缩工具的例子是什么?

文件压缩工具的一个流行例子是WinZip,它支持包括ZIP和RAR在内的多种压缩格式。

文件压缩会影响文件的质量吗?

对于无损压缩,质量保持不变。然而,对于有损压缩,由于它消除了较不重要的数据以更大程度地减小文件大小,因此可能会有明显的质量下降。

文件压缩安全吗?

是的,就数据完整性而言,文件压缩是安全的,尤其是无损压缩。然而,像任何文件一样,压缩的文件可能会被恶意软件或病毒攻击,因此总是必要的有安装可靠的安全软件。

哪些类型的文件可以被压缩?

几乎所有类型的文件都可以被压缩,包括文本文件、图像、音频、视频和软件文件。然而,可达到的压缩水平可以在文件类型之间大大变化。

ZIP文件是什么意思?

ZIP文件是一种使用无损压缩来减小一个或多个文件大小的文件格式。ZIP文件中的多个文件有效地被捆绑在一起成为一个单一的文件,这也使得分享变得更容易。

我可以压缩一个已经压缩的文件吗?

技术上,是的,尽管额外的减小大小可能是微不足道的甚至适得其反。压缩一个已经压缩的文件有时可能会增加它的大小,由于压缩算法添加的元数据。

我如何解压文件?

要解压文件,你通常需要一个解压或解压缩工具,如WinZip或7-Zip。这些工具可以从压缩格式提取原始文件。