pythondétect如果文件是tar或tar.gz或zip

时间:2017-07-12 13:05:26

标签: python compression tar

我有问题,我需要识别文件类型(tar,tar.gz或zip)我在这个网站找到了一个解决方案: Python - mechanism to identify compressed file type and uncompress

但该解决方案不适用于tar文件,因为tar文件没有相同的开始caractere ...

magic_dict = {
    "\x1f\x8b\x08": "gz",
    "\x00\x00\x00": "tar",
    "\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"

如何制作检测tar文件?

1 个答案:

答案 0 :(得分:0)

至少GNU tar a"魔术签名",但它不是在偏移0(文件的开头),而是在偏移257,它是字符串ustar后跟NUL角色;见https://en.wikipedia.org/wiki/Tar_(computing)#UStar_format

相关问题