在python中解压.zip

问题描述 投票:0回答:2

我在使用 python2 提取 .zip 时遇到

BadZipfile: Bad magic number for file header
错误
zipfile.ZipFile

使用 unzip 解压时,相同的 .zip 给出

file #1:  bad zipfile offset (local header sig):  0
,但使用退出代码 2 解压。

使用

jar -xf file.zip
时,命令以
$? == 0
完成,不提取任何内容。

使用文件给出:

file -i file.zip
file.zip application/octet-stream; charset=binary

这为 zip 文件提供了不正确的标头

$ hexdump -C file.zip | head -10
00000000  50 67 f0 de 1e 7a 29 e4  93 56 3f 11 a2 5f b6 97  |Pg...z)..V?.._..|

正确的标题是:

00000000  50 4b 03 04 14 00 08 08  08 00 28 3e 4b 4b 00 00  |PK........(>KK..|

为什么文件被列为 application/octet-stream ?

我在

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty

发生什么事了?这是什么文件格式?有什么指点吗?

python jar unzip zip
2个回答
1
投票

你尝试过这个吗?

import zipfile
zip_ref = zipfile.ZipFile(path_to_zip_file, 'r')
zip_ref.extractall(directory_to_extract_to)
zip_ref.close()

0
投票

你可以试试这个:

def open_zip(path_to_archive, folder_arg):
    if zipfile.is_zipfile(path_to_archive) is True:
        zip_ref = zipfile.ZipFile(path_to_archive, 'r')
        zip_ref.extractall(folder_arg)
        zip_ref.close()
        print("finish to extract zip file")
    else:
        print(f"the file {path_to_archive} is not a zip file")
© www.soinside.com 2019 - 2024. All rights reserved.