这将允许您迭代行。它的一部分是从我在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 = open(filepath, 'rb')

self.filepath = filepath

self.archive = py7zlib.Archive7z(fp)

def __contains__(self, name):

return name in self.archive.getnames()

def readlines(self, name, newline=''):

r""" Iterator of lines from named archive member.

`newline` controls how line endings are handled.

It can be None, '', '\n', '\r', and '\r\n' and works the same way as it does

in StringIO. Note however that the default value is different and is to enable

universal newlines mode, but line endings are returned untranslated.

"""

archivefile = self.archive.getmember(name)

if not archivefile:

raise SevenZFileError('archive member %r not found in %r' %

(name, self.filepath))

# Decompress entire member and return its contents iteratively.

data = archivefile.read().decode()

for line in io.StringIO(data, newline=newline):

yield line

if __name__ == '__main__':

import csv

if SevenZFile.is_7zfile('testing.csv.7z'):

sevenZfile = SevenZFile('testing.csv.7z')

if 'testing.csv' not in sevenZfile:

print('testing.csv is not a member of testing.csv.7z')

else:

reader = csv.reader(sevenZfile.readlines('testing.csv'))

for row in reader:

print(', '.join(row))

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

  1. 用Python解压tgz文件

    用Python解压tgz文件 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可.允许非商业转载,但应注明作者及出处. 作者:xialulee 最初发布于:2 ...

  2. Python解压zip文件出现TypeError: pwd: expected bytes, got str的解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  3. Windows下使用python解压tgz文件

    浅记以备自用 有时候下载的数据集压缩包可能是tgz格式,在windows下使用常规的解压缩软件无法解压,可以使用python解压tgz文件. Step1.载入模块 import tarfile Ste ...

  4. python解压打开文件过多_自动解压大量压缩文件 Python 脚本 | 学步园

    之前写了一个自动解压压缩文件到压缩文件所在文件夹的脚本 后根据自己需要,写了另外两个.原理一样 都是使用winrar的命令 第一个脚本没考虑周到,只能解压rar文件 改进后可以支持winrar支持的各 ...

  5. python解压打开文件过多_让Python在后台自动解压各种压缩文件!

    一.需求描述 编写一个Python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 gzi ...

  6. python解压版使用_【Python】使用 zipfile 解压含有中文文件名的 zip 文件

    问题 在使用 Python 内置标准库 zipfile 解压文件时,如果压缩文件中有的文件含有中文,那么解压后就会发现文件名中的中文部分是乱码.例如我分别新建三个 txt 文件:文件1.txt,文件2 ...

  7. python解压zip文件_Python中最快解压zip文件的方法

    假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...

  8. python解压zip文件_python-29 python解压压缩包的几种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  9. python 解压zip文件_Python 解压缩文件详解

    zipfile模块及相关方法介绍: 1 压缩 1.1 创建zipfile对象 zipfile.ZipFile(file, mode='r', compression=0, allowZip64=Tru ...

  10. python解压rar文件

    #coding=utf-8import rarfilepath_rar = "E:\\rar_source\\temp.rar"path_folder = "E:\\fo ...

最新文章

  1. eclipse新建python文件夹_eclipse 如何创建python文件
  2. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )
  3. ueditor版本python3_GitHub - crazyinstall/DjangoUeditor3: Django Ueditor 兼容Python3改进,Python2上也可用...
  4. matebook14支持触摸屏吗_华为MateBook 14 2021发布,触摸屏成标配
  5. 《CCNP TSHOOT 300-135认证考试指南》——5.10节定义关键术语
  6. java的求和函数_Java Stream流之求和的实现
  7. maven 工程依赖了某个jar包 但还是报java.lang.ClassNotFoundException的问题
  8. 如何查看服务器数据库型号,如何查看服务器里的数据库
  9. sql server alter权限_SQL
  10. 根据 key值查找数组对象中所有的符合的对象 (递归)
  11. 遥感影像预处理流程及基本概念介绍(辐射校正、辐射定标、大气校正、正射校正等)
  12. VS修改软件生成的 exe名称
  13. 项目ITP(一) 二维码
  14. unity 暂停按钮_Unity通过按钮控制视频播放与停止
  15. 【OpenCV】-重映射
  16. ctfshow 菜狗杯 化零为整 wp
  17. 【CSS3】 CSS3实现“图片阴影”效果
  18. 科沃斯扫地机器人电路原理图_扫地机器人的工作原理详解
  19. linux静默安装oracle11g数据库教程
  20. Linux (redhat)封装虚拟机镜像

热门文章

  1. 禁用ubuntu16.04的guest账户
  2. SpringBoot的pom详解
  3. 灵山奇缘服务器维护中,灵山奇缘跨服系统详细介绍
  4. sudo_拔剑-浆糊的传说_新浪博客
  5. eclipse建java gui工程,Eclipse java swing开发环境搭建教程
  6. linux把程序放入后台执行,linux将程序放到后台执行
  7. css3动画按钮_CSS3的动画按钮
  8. 数据挖掘与六度分隔理论
  9. python里创建数据库表Column常用参数总结
  10. glassfish java环境_GlassFish安装和配置详解