xopen 一个高效压缩和解压缩python库碾压gzip

xopen库介绍

xopen这个Python模块提供了一个xopen函数,它的工作方式类似于内置的open函数,而且可以透明地处理压缩文件。支持的压缩格式目前是gzip, bzip2, xz和可选的Zstandard。

Xopen选择最有效的方法来读取或写入压缩文件。对于gzip文件,如果支持的话,使用python-isal库的线程方法。另外,还可以打开管道,使用外部工具,例如pigz,它是gzip的并行版本。

如果将threads=0传递给xopen(),则不使用外部进程。对于gzip文件,如果安装了python-isal(绑定isa-l),就会使用它(因为python-isal是xopen的依赖,所以应该总是这样)。Python -isal不支持大于3的压缩级别,因此如果没有可用的外部工具或线程设置为0,则使用Python内置的gzip。使用Open。

对于xz文件,使用到xz程序的管道,因为它内置了对多线程压缩的支持。

对于bz2文件,使用pbzip2(并行bzip2)。

如果其他方法都不能使用,xopen将返回到Python的内置函数(gzip.open, lzma.open, bz2.open)。

如果可以识别扩展名(.gz、。bz2、。xz或。zst),则使用的文件格式由文件名决定。在读取没有识别的文件扩展名的文件时,xopen试图通过读取文件的前几个字节来检测格式。xopen兼容Python 3.8及更高版本。

使用方法

读取文件

# Open a file for reading:

from xopen import xopen

with xopen("file.txt.gz") as f:
    content = f.read()

写入文件

#Write to a file in binary mode, set the compression level and avoid using an external process:

from xopen import xopen

with xopen("file.txt.xz", mode="wb", threads=0, compresslevel=3) as f:
    f.write(b"Hello")

最新版的xopen使用 isal.igzip_threaded 模块,而不是利用管道从外部程序获取数据。这使得使用线程读写gzip文件更加高效。

相关推荐

  1. xopen 一个高效压缩和解压缩python碾压gzip

    2024-01-10 09:28:03       47 阅读
  2. Python中的压缩和解压缩模块:zipfile和tarfile

    2024-01-10 09:28:03       35 阅读
  3. centos学习-压缩和解压缩命令

    2024-01-10 09:28:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 09:28:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 09:28:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 09:28:03       87 阅读
  4. Python语言-面向对象

    2024-01-10 09:28:03       96 阅读

热门阅读

  1. apache2的虚拟主机的配置

    2024-01-10 09:28:03       49 阅读
  2. DevOps|产研运协作工具链上的皇冠-项目管理工具

    2024-01-10 09:28:03       56 阅读
  3. Leetcode 2697. 字典序最小回文串

    2024-01-10 09:28:03       59 阅读
  4. 【SOC的多种计算方法】

    2024-01-10 09:28:03       59 阅读
  5. performClick()方法

    2024-01-10 09:28:03       53 阅读
  6. The most simple way to use Postman

    2024-01-10 09:28:03       57 阅读
  7. php将文本内容写入一个文件(面向对象写法)

    2024-01-10 09:28:03       63 阅读
  8. php中的继承和接口

    2024-01-10 09:28:03       56 阅读
  9. Hive的时间处理函数from_unixtime和unix_timestamp

    2024-01-10 09:28:03       60 阅读