我有几个zip和rar文件正在处理,我试图分析每个文件的压缩属性(压缩级别、压缩算法(例如deflate、LZMA、BZip2)、字典大小、单词大小等),但我还没有找到一种方法来实现。
是否有任何软件或其他方式可以分析文件以确定这些属性?
谢谢!
我有几个zip和rar文件正在处理,我试图分析每个文件的压缩属性(压缩级别、压缩算法(例如deflate、LZMA、BZip2)、字典大小、单词大小等),但我还没有找到一种方法来实现。
是否有任何软件或其他方式可以分析文件以确定这些属性?
谢谢!
这是一个相当老的问题,但我还是想发表一下我的看法,因为上面的一些方法对我来说不太容易使用。
您也可以使用7-Zip来确定这一点。打开存档文件后,有一个压缩方法的列:
对于ZIP文件 - 是的,使用zipinfo
对于RAR文件,可以使用7Zip或WinRAR轻松找到头部信息,请阅读附带的文档。
通过7-Zip(或p7zip)命令行:
7z l -slt archive.file
如果要具体查找压缩方法:
7z l -slt archive.file | grep -e '^---' -e '^Path =' -e '^Method ='
它使您能够浏览RAR和ZIP文件的数据字段。请参考此屏幕截图进行查看。python C:\Python27\Scripts\hachoir-wx
HEAD_FLAGS Bit flags: 2 bytes
0x10 - information from previous files is used (solid flag)
bits 7 6 5 (for RAR 2.0 and later)
0 0 0 - dictionary size 64 KB
0 0 1 - dictionary size 128 KB
0 1 0 - dictionary size 256 KB
0 1 1 - dictionary size 512 KB
1 0 0 - dictionary size 1024 KB
1 0 1 - dictionary size 2048 KB
1 1 0 - dictionary size 4096 KB
1 1 1 - file is directory
METHOD Packing method 1 byte
0x30 - storing
0x31 - fastest compression
0x32 - fast compression
0x33 - normal compression
0x34 - good compression
0x35 - best compression
而维基百科也知道这一点:
RAR压缩实用程序是专有的,具有封闭的算法。RAR归Alexander L. Roshal所有,他是Eugene Roshal的哥哥。RAR的第3版基于Lempel-Ziv(LZSS)和预测通过部分匹配(PPM)压缩,特别是Dmitry Shkarin的PPMII的PPMd实现。
对于ZIP文件,我会先查看规格说明和ZIP维基百科页面。这些可能很有趣:
general purpose bit flag: (2 bytes)
compression method: (2 bytes)
对于ZIP文件,有一个命令叫做zipinfo。
sudo apt install unzip
- holzkohlengrillzipfile python模块可以用于获取有关zipfile的信息。
ZipInfo
类提供了文件名、压缩类型、压缩大小、文件大小等信息...
Python代码片段,用于获取zip存档中文件的文件名和压缩类型。
import zipfile
with zipfile.ZipFile(path_to_zipfile, 'r') as zip:
for info in zip.infolist():
print(f'filename: {info.filename}')
print(f'compress type: {info.compress_type}')
链接在被接受的答案中的Python模块不可用,zipfile
模块可能会有所帮助。
类型很容易,只需查看文件头(PK
和Rar
)。
至于剩下的部分,我怀疑这些信息在压缩内容中是不可用的。