python解压7z文件_如何读取用7z压缩的文本文件?

本文介绍如何在Python中使用py7zlib库读取7z压缩文件的内容,特别是针对文本文件,通过自定义的SevenZFile类实现按行迭代解压。代码示例展示了读取压缩包内csv文件并打印内容的方法。
摘要由CSDN通过智能技术生成

这将允许您迭代行。它的一部分是从我在answer中找到的一些代码派生出来的。

在这个时间点(pylzma-0.5.0)上,py7zlib模块没有实现允许存档成员作为字节流或字符流读取的API,它的ArchiveFile类只提供一个read()函数,该函数一次解压缩并返回成员中的未压缩数据。考虑到这一点,最好的方法是通过Python生成器将字节或行作为缓冲区迭代返回。

下面是后者,但如果问题是存档成员文件本身太大,则可能没有帮助。

下面的代码应该可以在Python3.x和2.7中使用。import io

import os

import py7zlib

class SevenZFileError(py7zlib.ArchiveError):

pass

class SevenZFile(object):

@classmethod

def is_7zfile(cls, filepath):

""" Determine if filepath points to a valid 7z archive. """

is7z = False

fp = None

try:

fp = open(filepath, 'rb')

archive = py7zlib.Archive7z(fp)

_ = len(archive.getnames())

is7z = True

finally:

if fp: fp.close()

return is7z

def __init__(self, filepath):

fp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值