魔法文件检测的纯蟒蛇实现
puremagic的Python项目详细描述
puremagic是一个纯python模块,它将基于 这是神奇的数字。
它被设计成极简主义和固有的跨平台 兼容的。它也被设计成python魔术的替身,它 合并来自文件(文件名[,mime])和 来自字符串(string[,mime]),但是magic_file()和 magic_string()更强大,还将显示信心和 重复匹配。
它不会尝试匹配非魔术字符串的文件。换句话说 不会在特定字节窗口内搜索字符串,如 其他人可能会。
使用“file”或“libmagic”包装器的优点:
- 更快
- 重量轻
- 跨平台兼容
- 无依赖关系
缺点:
- 没有那么多文件类型
- 没有多语言注释
- 由于较小或重复使用的幻数而导致的重复
(通过贡献帮助解决前两个缺点!)
兼容性
- Python2.7+
- Python3.3+
- 皮比
使用travis ci在列出的平台上运行持续集成测试。
安装
在virtualenv或global中,只需运行:
$ python setup.py install
它没有依赖项(2.7+内置argparse除外)
使用量
“from_file”将返回最可能的文件扩展名。“魔法文件” 会给你一切可能的结果,以及信心。
importpuremagicfilename="test/resources/images/test.gif"ext=puremagic.from_file(filename)# '.gif'puremagic.magic_file(filename)# [['.gif', 'image/gif', 'Graphics interchange format file (GIF87a)', 0.7],# ['.gif', '', 'GIF file', 0.5]]
使用“magic_file”,它会为每一场比赛提供最高的可信度:
- 可能的扩展名
- mime类型
- 说明
- 信心(所有标题必须完全匹配才能进入列表, 但这是按最长的标题排序的,因此是最精确的, 首先)
脚本
用法
$ python -m puremagic [options] filename <filename2>...
示例
$ python -m puremagic test/resources/images/test.gif 'test/resources/images/test.gif' : .gif $ python -m puremagic -m test/resources/images/test.gif test/resources/audio/test.mp3 'test/resources/images/test.gif' : image/gif 'test/resources/audio/test.mp3' : audio/mpeg
常见问题
文件类型实际上是x,但它显示为y,并且 自信?
当文件的签名与 文件标准。子集签名将更长,因此报告 因为它将同时具有基本文件类型 签名加上附加的子集。
您没有可以更好地检测大量 常见格式,为什么?
设计上的选择,所以会更快更准确。没有 更智能或更深入的识别通过滑动偏移我不知道 把它作为“神奇数字”库的一部分,你会感到很舒服。
您的版本没有我想要的那么完整,我还应该在哪里 你看?
查看包装libmagic或使用类似 阿帕奇·蒂卡。
确认
加里凯斯勒
使用HIS文件签名表,请访问: http://www.garykessler.net/library/file_sigs.html
freedesktop.org
使用共享的mime信息文件(即使他们确实使用xml,blea),请访问: https://cgit.freedesktop.org/xdg/shared-mime-info/
许可证
麻省理工学院许可证,见许可证,版权所有(C)2013-2018 Chris Griffith