首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python从7z文件中提取未压缩的数据。

python从7z文件中提取未压缩的数据。
EN

Stack Overflow用户
提问于 2016-05-25 09:12:54
回答 2查看 9.8K关注 0票数 0

我有几个csv-文件,其中一些是压缩的,但另一些不是,所有在一个7z存档。我想读取csv文件并将内容保存在数据库中。但是,每当py7zlib决定从实际未压缩的csv文件中读取数据时,我就会得到错误data error during decompression

代码语言:javascript
复制
import os
import py7zlib

scr = r'Y:\PathtoArchive'
z7file = 'ArchiveName.7z'

with open(os.path.join(scr,z7file),'rb') as f:
    archive = py7zlib.Archive7z(f)

    names = archive.filenames

    for mem in names:

        obj = archive.getmember(mem)
        print obj.compressed  # prints None for uncompressed data
        try:
            data = obj.read()
        except Exception as er:
            print er          # prints data error during decompression
                              # whenever obj.compressed is None

错误发生在

代码语言:javascript
复制
File "C:\Anaconda\lib\site-packages\py7zlib.py", line 608, in read
data = getattr(self, decoder)(coder, data, level)
File "C:\Anaconda\lib\site-packages\py7zlib.py", line 671, in _read_lzma
return self._read_from_decompressor(coder, dec, input, level, checkremaining=True, with_cache=True)
File "C:\Anaconda\lib\site-packages\py7zlib.py", line 646, in _read_from_decompressor
tmp = decompressor.decompress(data)
ValueError: data error during decompression

那么,如何从7z档案中提取未压缩的数据呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-08 10:15:19

虽然我不知道问题是什么,但我找到了一个解决办法,解决了从7z档案中获取csv文件的最终目标。7-zip附带一个命令行工具。通过子处理模块与该工具通信,我可以自动提取所提取的文件,而不会出现任何问题。

代码语言:javascript
复制
import subprocess
import py7zlib 

archiveman = r'c:\Program Files\7-zip\7z' # 7z.exe comes with 7-zip
archivepath = r'C:\Path\to\archive.7z'

with open(archivepath,'rb') as f:
    archive = py7zlib.Archive7z(f)
    names = archive.filenames
    for name in names:
        _ = subprocess.check_output([archiveman, 'e', archivepath, '-o{}'.format(r'C:\Destination\of\copy'), name])

可以与7z一起使用的不同命令可以找到这里

票数 2
EN

Stack Overflow用户

发布于 2020-07-20 06:22:34

您可以尝试另一个库py7zr,它也支持7zip存档压缩、解压缩、加密和解密。https://pypi.org/project/py7zr

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37432594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档