lzma算法 php,如何使用Python 3将lzma2(.xz)和zstd(.zst)文件解...

可以使用lzma module解压缩LZMA数据,只需使用该模块打开文件,然后使用shutil.copyfileobj()将解压缩的数据有效地复制到输出文件,而不会遇到内存问题:

import lzma

import pathlib

import shutil

def decompress_lzma_to_folder(input_file):

input_file = pathlib.Path(input_file)

with lzma.open(input_file) as compressed:

output_path = pathlib.Path(destination_dir) / input_file.stem

with open(output_path, 'wb') as destination:

shutil.copyfileobj(compressed, destination)

Python标准库尚不支持Zstandard压缩,您可以使用zstandard(由Mozilla和Mercurial项目提供的IndyGreg)或zstd.后者可能对于您的需求来说太基础了,而zstandard提供了特别适合于读取文件的流API.

我在这里使用zstandard库来受益于它实现的复制API,该API使您可以同时解压缩和复制,类似于shutil.copyfileobj()的工作方式:

import zstandard

import pathlib

import shutil

def decompress_zstandard_to_folder(input_file):

input_file = pathlib.Path(input_file)

with open(input_file, 'rb') as compressed:

decomp = zstandard.ZstdDecompressor()

output_path = pathlib.Path(destination_dir) / input_file.stem

with open(output_path, 'wb') as destination:

decomp.copy_stream(compressed, destination)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值