此页面具有“魔术”文件签名列表。抓住您需要的内容,并将其放入如下所示的字典中。然后,我们需要一个将dict键与文件开头相匹配的函数。我已经写了一个建议,尽管可以通过将其预处理
magic_dict为一个巨大的编译正则表达式进行优化。
magic_dict = { "x1fx8bx08": "gz", "x42x5ax68": "bz2", "x50x4bx03x04": "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"该解决方案应该是跨平台的,并且当然不依赖于文件扩展名,但是对于具有随机内容且恰好以某些特定魔术字节开头的文件,它可能会带来误报。



