Python-识别压缩文件类型并解压缩的机制
压缩文件可以分为以下逻辑组
a。您正在使用的操作系统(* ix,Win)等
。不同类型的压缩算法(即.zip,.z,.bz2,.rar,.gzip)。从最常用的压缩文件的标准列表中了解。
C。然后我们有了tar球机制-我想这里没有压缩。但这更像是串联。
现在,如果我们开始处理以上压缩文件集,请执行以下操作
:选项(a)将由python处理,因为它是平台无关的语言。
b。选项(b)和(c)似乎有问题。
我需要
什么我该如何识别文件类型(压缩类型)然后对其进行UN压缩?
喜欢:
fileType = getFileType(fileName)
switch(fileType):
case .rar: unrar....
case .zip: unzip....
etc
因此,基本问题是如何基于文件识别压缩算法(假设未提供扩展名或扩展名不正确)?在python中有什么特定的方法吗?
-
此页面具有“魔术”文件签名列表。抓住您需要的内容,并将其放入如下所示的字典中。然后,我们需要一个将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"
该解决方案应该是跨平台的,并且当然不依赖于文件扩展名,但是对于具有随机内容且恰好以某些特定魔术字节开头的文件,它可能会带来误报。