gpt4 book ai didi

Python - 识别压缩文件类型和解压缩的机制

转载 作者:IT老高 更新时间:2023-10-28 22:20:56 27 4
gpt4 key购买 nike

一个压缩文件可以分为以下逻辑组
一个。您正在使用的操作系统(*ix、Win)等
湾。不同类型的压缩算法(即 .zip、.Z、.bz2、.rar、.gzip)。至少来自最常用的压缩文件的标准列表。
C。然后我们有 tar 球机制——我想那里没有压缩。但它更像是一个串联。

现在,如果我们开始处理上述压缩文件集,
一个。选项 (a) 将由 python 处理,因为它是独立于平台的语言。
湾。选项(b)和(c)似乎有问题。

我需要什么
如何识别文件类型(压缩类型)然后解压缩它们?


喜欢:

fileType = getFileType(fileName)  
switch(fileType):
case .rar: unrar....
case .zip: unzip....

etc

所以根本问题是我们如何根据文件识别压缩算法(假设未提供扩展名或不正确)?在python中有没有具体的方法呢?

最佳答案

This page有一个“魔法”文件签名列表。捕获你需要的那些,把它们放在像下面这样的字典里。然后我们需要一个函数来匹配 dict 键和文件的开头。我写了一个建议,尽管它可以通过将 magic_dict 预处理为例如进行优化。一个巨大的编译正则表达式。

magic_dict = {
"\x1f\x8b\x08": "gz",
"\x42\x5a\x68": "bz2",
"\x50\x4b\x03\x04": "zip"
}

max_len = max(len(x) for x in magic_dict)

def file_type(filename):
with open(filename) as f:
file_start = f.read(max_len)
for magic, filetype in magic_dict.items():
if file_start.startswith(magic):
return filetype
return "no match"

这个解决方案应该是跨平台的,当然不依赖于文件扩展名,但它可能会给随机内容的文件带来误报,这些文件恰好以某些特定的魔术字节开头。

关于Python - 识别压缩文件类型和解压缩的机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com