蟒蛇检测,如果文件是tar或tar.gz的或zip
问题描述:
我有一个问题,我需要识别文件类型(焦油的tar.gz或zip),我发现在这个网站的解决方案: Python - mechanism to identify compressed file type and uncompress蟒蛇检测,如果文件是tar或tar.gz的或zip
但该解决方案不适合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文件?
答
至少GNU焦油具有“神奇签字”,但它不是在偏移0(文件的开头),但在偏移257,这是其次是NULL字符字符串ustar
;看到https://en.wikipedia.org/wiki/Tar_(computing)#UStar_format
+0
我如何读取字符串ustar? – user7454761
这是蟒蛇2还是python 3? –
我使用python 2.7 – user7454761