繁体   English   中英

如何使用 Python 解压缩“来自 FAT 文件系统(MS-DOS、OS/2、NT)的 gzip 压缩数据”

[英]How to unzip 'gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT),' using Python

我正在尝试使用 Python 解压缩从 iCloud.com 下载存档文件。 众所周知的方法都不起作用。 我用 Python 3 尝试了以下操作:

  1. 使用shutil.unpack_archive()
  2. 使用 Python 的gzip
  3. 使用 Python 的zipfile

当我使用 Python 的magic库和xxd工具检查文件时,它显示以下输出:

magic.from_file() => 'gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT), original size modulo 2^32 6670928'

xxd -l 4 ... => 1f8b 0800

在 FAT 上创建的 zip 文件有什么特别之处? 如何解压它?

正如您的问题标题所示,它不是 zip 文件(尽管.zip文件类型); 这是一个 gzip 文件。 尝试使用gzip模块:

import zipfile
FN = "20210129_201905366.band.zip"
print(f"{FN} is a zip file: {zipfile.is_zipfile(FN)}")

import gzip
GZ = gzip.GzipFile(FN)
contents = GZ.read()
print(f"{FN} is a gzip file with length: {len(contents)}")
with open('ungzipped.zip', 'wb') as i:
    i.write(contents)
import shutil
shutil.unpack_archive('ungzipped.zip')
# This produces correct output file - 20210129_201905366.band

印刷:

20210129_201905366.band.zip is a zip file: False
20210129_201905366.band.zip is a gzip file with length: 6670928

结果是gzip文件 ( 20210129_201905366.band.zip ) 中的一个zip文件 ( 20210129_201905366.band )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM